|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Автозамена при перемещении |
|
CMD/BAT - [решено] Автозамена при перемещении
|
Старожил Сообщения: 166 |
Профиль | Отправить PM | Цитировать У меня есть много одинаковых (по имени - Material3) папок в различных под папках, очень много, в эти папках находятся *.mat файлы, среди *.mat файлов попадаются одинаковые
скриптом: перемещаю все эти папки в одно место, т.о. все папки должны слиться в одну, а все файлы *.mat переместиться в эту папку с заменой соответсвенно, но несмотря на использование ключа /y (пробовал и /Y) скрипт постоянно спрашивает о замене, как сделать автозамену в скрипте? |
|
Отправлено: 09:16, 15-01-2011 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Tosyk:
- ограничиться для сравнения размером, но могут встретиться два разных файла одного размера; - использовать более быстрые альтернативы, чем FC.EXE... например, порт Unix-утилиты DIFF.EXE |
|
Отправлено: 11:40, 18-01-2011 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать а если использовать diff.exe, то кинуть его в папку к скрипту, а скрипт будет выглядеть так?:
@echo off SETLOCAL EnableDelayedExpansion Call :MainExe Material3 EXIT :MainExe %folder_name% ::--------------------- set "set $d="& if "%~1"=="" GoTo:EOF for /f "delims=" %%d in ('dir/b/s/ad "%~1.*"') do if "%%~xd"=="" ( for /f "delims=" %%f in ('dir/b/s/a-d "%%d"') do ( set "$d=%%~dpf"& set "$d=!$d:%%~dpd=%%~dpd..\..\!" call:MoveRen "%%f" "!$d!" )) GoTo:EOF :MoveRen %source_file% %destin_folder% ::------------------------------------- set "$s="& set "$n="& if "%~1"=="" GoTo:EOF if not exist "%~2" md "%~2"||exit/b 1 :MoveRen_Loop if not exist "%~2%~n1%$s%%~x1" move "%~1" "%~2%~n1%$s%%~x1"& GoTo:EOF diff/b "%~1" "%~2%~n1%$s%%~x1">nul&&(del/f/q "%~1"& GoTo:EOF) set/a "$n+=1"& set "$s=0!$n!"& set "$s=_!$s:~-2!" GoTo:MoveRen_Loop |
Отправлено: 12:11, 18-01-2011 | #22 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать |
Отправлено: 12:28, 18-01-2011 | #23 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать а скажите, как тогда изменится весь скрипт?
так?: @echo off SETLOCAL EnableDelayedExpansion Call :MainExe Material3 EXIT :MainExe %folder_name% ::--------------------- set "set $d="& if "%~1"=="" GoTo:EOF for /f "delims=" %%d in ('dir/b/s/ad "%~1.*"') do if "%%~xd"=="" ( for /f "delims=" %%f in ('dir/b/s/a-d "%%d"') do ( set "$d=%%~dpf"& set "$d=!$d:%%~dpd=%%~dpd..\..\!" call:MoveRen "%%f" "!$d!" )) GoTo:EOF :MoveRen %source_file% %destin_folder% ::------------------------------------- set "$s="& set "$n="& if "%~1"=="" GoTo:EOF if not exist "%~2" md "%~2"||exit/b 1 :MoveRen_Loop if not exist "%~2%~n1%$s%%~x1" move "%~1" "%~2%~n1%$s%%~x1"& GoTo:EOF diff -q --binary "%~1" "%~2%~n1%$s%%~x1">nul&& (del/f/q "%~1"&& GoTo:EOF||exit/b 3) set/a "$n+=1"& set "$s=0!$n!"& set "$s=_!$s:~-2!" GoTo:MoveRen_Loop |
Отправлено: 12:44, 18-01-2011 | #24 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Tosyk, не хочу замусоривать ветку копиями одного и того же кода (и вам не советую)
подсветил заменяемую строку в посте #16 |
Отправлено: 12:49, 18-01-2011 | #25 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать прошу меня простить, если нужно я почищу ветку
начинаю тестировать, натравил скрипт |
Отправлено: 13:53, 18-01-2011 | #26 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать к сожалению скорости особо не прибавилось, после 600-700 элементов начинаются серьёзные задержки - 40-90 сек для каждого файла, и это только файлы размером в 1 кб, однако впереди файлы размером от 1 до 24 мегабайт (56000 элементов),
на самом деле я за надёжность!, но скажите как будет выглядеть скрипт не сравнивающий файлы по-байтно. p.s.: и скрипт опять остановился на 814-ом файле |
Отправлено: 08:22, 19-01-2011 | #27 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Tosyk:
Цитата Tosyk:
|
||
Отправлено: 13:29, 19-01-2011 | #28 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать если скрипт применяется к каждому файлу отдельно, то скорее всего дело в задержке его какими-то условиями
Цитата amel27:
Цитата amel27:
Цитата amel27:
Цитата amel27:
файлов действительно очень много |
||||
Отправлено: 13:42, 19-01-2011 | #29 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать amel27, приветствую, поможете мне?
|
Отправлено: 03:24, 26-01-2011 | #30 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Проблема с переносом разрешений при перемещении данных | 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 |
|