Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Автозамена при перемещении

Ответить
Настройки темы
CMD/BAT - [решено] Автозамена при перемещении

Аватара для Tosyk

Старожил


Сообщения: 166
Благодарности: 0

Профиль | Отправить PM | Цитировать


У меня есть много одинаковых (по имени - Material3) папок в различных под папках, очень много, в эти папках находятся *.mat файлы, среди *.mat файлов попадаются одинаковые

скриптом:

Код: Выделить весь код
for /f "tokens=*" %%b in ('dir /b /s Material3') do move /y "%%b" "%%~dpb../.."
перемещаю все эти папки в одно место, т.о. все папки должны слиться в одну, а все файлы *.mat переместиться в эту папку с заменой соответсвенно, но несмотря на использование ключа /y (пробовал и /Y) скрипт постоянно спрашивает о замене, как сделать автозамену в скрипте?

Отправлено: 09:16, 15-01-2011

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Tosyk, ничего особенного - из лога видно, что процесс был прерван вручную комбинацией Ctrl+C, попробуйте сначала прогнать скрипт без лога, либо уменьшите количество папок - с логом скрипт работает в десятки раз медленней

Отправлено: 10:55, 27-01-2011 | #61



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Tosyk

Старожил


Сообщения: 166
Благодарности: 0

Профиль | Отправить PM | Цитировать


Запустил опять остановился, странно опять остановился на том же самом каталоге на котором останавливался и самый первый скрипт из темы, имя каталога "wp_Zephi_st2_3_Rose". это первый каталог в котором в Material3 присутствует уже упомянутый M01.mat. Сподкнулся он именно на этом файле, т.к в script_only_mover_2.$~1 существует последовательность:

Код: Выделить весь код
...
..\_export_\wp_Zephi_st2_1_Sakura\Texture2D
..\_export_\wp_Zephi_st2_1_Sakura\SkeletalMesh
..\_export_\wp_Zephi_st2_1_Sakura\Material3
..\_export_\wp_Zephi_st2_1_Sakura\StaticMesh
..\_export_\wp_Zephi_st2_2_Narcissus\Texture2D
..\_export_\wp_Zephi_st2_2_Narcissus\SkeletalMesh
..\_export_\wp_Zephi_st2_2_Narcissus\Material3
..\_export_\wp_Zephi_st2_2_Narcissus\StaticMesh
..\_export_\wp_Zephi_st2_3_Rose\Texture2D
..\_export_\wp_Zephi_st2_3_Rose\SkeletalMesh
дальше должен быть каталог
Код: Выделить весь код
..\_export_\wp_Zephi_st2_3_Rose\Material3
в котором как раз находится первый *.mat - M01.mat! до этого ни в одной папке Material3 нет фалов (результат работы первого скрипта), эти файлы в корне в папке Material3 (напомню их 814)

Отправлено: 11:43, 27-01-2011 | #62


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата Tosyk:
в котором как раз находится первый *.mat - M01.mat! »
Первый блок кода (тот что формирует файл .$~1) вообще игнорирует файлы - он только перечисляет имена подкаталогов 2-го уровня + "вытаскивает" их структуру без файлов (строка с XCOPY)... Вот этот кусок с закомментированной командой XCOPY:
Код: Выделить весь код
@echo off
set root=.\_export_
if not exist "%root%" echo Не найден корневой каталог!& pause>nul& exit

SETLOCAL EnableDelayedExpansion
for %%a in ("%root%") do set "rpth=%%~fa"

type nul >"%~dpn0.$~1"
(for /d %%a in ("%rpth%") do for /d %%b in ("%%~a\*") do for /d %%c in ("%%~b\*") do (
 REM xcopy /t "%%~c\*" ".\%%~nc\"
 >>"%~dpn0.$~1" echo %%~c
))
проверь такой вариант, если пройдёт и файл-список сформируется, попробуй раскомментировать XCOPY и еще раз прогнать

Отправлено: 14:31, 27-01-2011 | #63


Аватара для Tosyk

Старожил


Сообщения: 166
Благодарности: 0

Профиль | Отправить PM | Цитировать


запустил скрипт (script_only_structer_4_eng.bat), появилось чёрное окно cmd, во время выполнения появился и рос файл script_only_structer_4_eng.$~1, в нём список папок из _export_

скрипт почему-то проигнорировал 2 последние папки:

Zephi_Yupa2_SS_0038
Zephi_Yupa2_SS_0243

Отправлено: 15:05, 27-01-2011 | #64


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата Tosyk:
в нём список папок из _export_ »
А вот и неправильно! В нём список подпапок папок из _export_, т.е. если папка ".\_export_\Zephi_Yupa2_SS_0038" не содержит подпапок, то в список и включать нечего... Кстати, как там начет XCOPY?.. Например, команда для "wp_Zephi_st2_3_Rose\Material3" должна получиться такой:
Код: Выделить весь код
xcopy /t ".\_export_\wp_Zephi_st2_3_Rose\Material3\*" ".\Material3\"

Отправлено: 16:38, 27-01-2011 | #65


Аватара для Tosyk

Старожил


Сообщения: 166
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата amel27:
В нём список подпапок папок из _export_ »
да-да, верно, я это и имел ввиду

Цитата amel27:
т.е. если папка ".\_export_\Zephi_Yupa2_SS_0038" не содержит подпапок, то в список и включать нечего... »
как раз папка содержит всё тоже самое, что и остальные

Цитата amel27:
Кстати, как там начет XCOPY? »
т.е. нужно заменить строку из #63
Код: Выделить весь код
 REM xcopy /t "%%~c\*" ".\%%~nc\"
на
Цитата amel27:
xcopy /t ".\_export_\wp_Zephi_st2_3_Rose\Material3\*" ".\Material3\" »
?

Отправлено: 17:17, 27-01-2011 | #66


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата Tosyk:
как раз папка содержит всё тоже самое, что и остальные »
тогда только вывести структуру в файл (dir.txt) и выложить этот файл на обменник:
Код: Выделить весь код
dir /b/s/ad .\_export_\* >dir.txt
Цитата Tosyk:
т.е. нужно заменить строку из #63 »
как уже сказал - "раскомментировать", т.е. убрать REM

Цитата Tosyk:
xcopy /t ".\_export_\wp_Zephi_st2_3_Rose\Material3\*" ".\Material3\"
эту команду можно проверить и без батника

Отправлено: 18:27, 27-01-2011 | #67


Аватара для Tosyk

Старожил


Сообщения: 166
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата amel27:
тогда только вывести структуру в файл (dir.txt) и выложить этот файл на обменник »
http://dl.dropbox.com/u/9919707/script_working/dir.txt - вот
Цитата amel27:
как уже сказал - "раскомментировать", т.е. убрать REM »
процесс идёт!

ДОБАВКА: скрипт меня спросил о замене файла M01.mat в корне\Material3, если я нажму да/всё, он просто всё заменит?

Цитата amel27:
xcopy /t ".\_export_\wp_Zephi_st2_3_Rose\Material3\*" ".\Material3\"
эту команду можно проверить и без батника »
по окнчании процесса сделаю!

Последний раз редактировалось Tosyk, 29-01-2011 в 11:49.


Отправлено: 11:44, 29-01-2011 | #68


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата Tosyk:
скрипт почему-то проигнорировал 2 последние папки »
да нет, у меня вывел все папки до одной

Цитата Tosyk:
скрипт меня спросил о замене файла M01.mat в корне\Material3, если я нажму да/всё, он просто всё заменит? »
батник в посте #63 ничего не должен заменять/спрашивать (даже с XCOPY), т.к. он ничего не копирует - только создаёт структуру пустых каталогов

Отправлено: 17:20, 29-01-2011 | #69


Аватара для Tosyk

Старожил


Сообщения: 166
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата amel27:
как уже сказал - "раскомментировать", т.е. убрать REM »
Цитата amel27:
xcopy /t ".\_export_\wp_Zephi_st2_3_Rose\Material3\*" ".\Material3\" »
всё это работает если в корне нет Material3 с файлами!

извените за ре-пост скрипта, но я уже начинаю запутываться в вариантах, поэтому буду отталкиваться от этого:
Код: Выделить весь код
@echo off
set root=.\_export_
if not exist "%root%" echo Can't find root folder!& pause>nul& exit

SETLOCAL EnableDelayedExpansion
for %%a in ("%root%") do set "rpth=%%~fa"

<nul set/p $="Scaning and preparing folders..."
type nul >"%~dpn0.$~1"
(for /d %%a in ("%rpth%") do for /d %%b in ("%%~a\*") do for /d %%c in ("%%~b\*") do (
 xcopy /q/t "%%~c\*" ".\%%~nc\">nul
 >>"%~dpn0.$~1" echo %%~c
))
echo OK& <nul set/p $="Scaning files for moving..."
type nul >"%~dpn0.$~2"
(for /f "usebackq delims=" %%a in ("%~dpn0.$~1") do (
 for /f "delims=" %%b in ('dir/b/s/a-d "%%a\*"') do (set "$b=%%b"
 >>"%~dpn0.$~2" echo !$b:%%a=%~dp0%%~na!?%%~zb?!$b!
)))
echo OK& <nul set/p $="Sorting file list..."
sort /l "C" "%~dpn0.$~2" /o "%~dpn0.$~3"
echo OK& <nul set/p $="Working with file list..."
set "$a="& set "$b="& set/a "$n1=0,$n2=0,$n3=0"
for /f "usebackq tokens=1-3 delims=?" %%a in ("%~dpn0.$~3") do (
 if not "!$a!"=="%%a" (
   move "%%c" "%%a"
   set "$a=%%a"& set "$b=%%b"& set/a "$k=0,$n1+=1"
 ) else if not "!$b!"=="%%b" (
   set/a "$k+=1,$n2+=1"& set "$k=000!$k!"& set "$b=%%b"
   move "%%c" "%%~dpna_!$k:~-4!%%~xa"
   ) else set/a $n3+=1
)
echo OK& <nul set/p $="Deleting source folder..."
set/a "$n0=$n1+$n2+$n3"& rd /s/q "%rpth%"
echo OK& echo.& echo.Processed files all: !$n0!, из них:& echo.
echo.moved    : %$n1%
echo.renamed : %$n2%
echo.copies deleted: %$n3%
ENDLOCAL
echo.& echo Script works complited!
pause>nul
Запустил его, по окончании я отпишу результат

Отправлено: 18:02, 29-01-2011 | #70



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Автозамена при перемещении

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Проблема с переносом разрешений при перемещении данных alnimo Microsoft Windows NT/2000/2003 5 21-12-2010 12:22
2003/XP/2000 - Изменение даты письма при перемещении между папками faktroot Microsoft Office (Word, Excel, Outlook и т.д.) 0 26-02-2010 17:58
Треск звука при перемещении мыши Dr. MefistO Непонятные проблемы с Железом 9 07-12-2008 14:26
Интерфейс - Неправильное отображение иконки файла при перемещении kopylovsergey Microsoft Windows 2000/XP 3 19-08-2008 11:24
[решено] Странная загрузка процессора при перемещении мыши DMGaster Microsoft Windows 2000/XP 12 13-09-2006 18:17




 
Переход