|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Автозамена при перемещении |
|
CMD/BAT - [решено] Автозамена при перемещении
|
Старожил Сообщения: 166 |
Профиль | Отправить PM | Цитировать У меня есть много одинаковых (по имени - Material3) папок в различных под папках, очень много, в эти папках находятся *.mat файлы, среди *.mat файлов попадаются одинаковые
скриптом: перемещаю все эти папки в одно место, т.о. все папки должны слиться в одну, а все файлы *.mat переместиться в эту папку с заменой соответсвенно, но несмотря на использование ключа /y (пробовал и /Y) скрипт постоянно спрашивает о замене, как сделать автозамену в скрипте? |
|
Отправлено: 09:16, 15-01-2011 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Tosyk:
@echo off SETLOCAL EnableDelayedExpansion Call :MainExe Material3 Call :MainExe MaterialConst 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 fc/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 |
|
Отправлено: 16:48, 17-01-2011 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать |
Отправлено: 16:58, 17-01-2011 | #12 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Tosyk, да
кстати, зря проигнорировали предложение forsem, в отличие от XCOPY, у ROBOCOPY есть ключ по перемещению папок |
Отправлено: 17:13, 17-01-2011 | #13 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать Работает чётко! Спасибо
а как сделать чтобы после перемещения удалялась исходная папка? Допустим такая структура: получается в папке _export_ после завершения операции 0 байт, я пробую удалить её командой написав её в конце скрипта, но скрипт просто игнорирует её. p.s.: я не проигнорировал упоминание ROBOCOPY, просто во-первых я "тупо не шарю", извените за сленг, а во-вторых я считаю, что если взялся за что-то одно, его нужно завершить. |
Отправлено: 17:43, 17-01-2011 | #14 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать такая непонятность:
скрипт завис (не крашился а завис) на 814 файле и не идёт дальше. касперский негодует в диспетчере задач постоянно выскакивает и пропадает процесс fc.exe папки с файлами Material3 ещё есть |
Отправлено: 06:12, 18-01-2011 | #15 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Tosyk:
@echo off SETLOCAL EnableDelayedExpansion Call :MainExe Material3 Call :MainExe MaterialConst EXIT :MainExe %folder_name% ::--------------------- set "set $d="& if "%~1"=="" GoTo:EOF for /f "delims=" %%d in ('dir/b/s/ad "%~1.*"') do if "%%~xd"=="" ( set "$e=0"& for /f "delims=" %%f in ('dir/b/s/a-d "%%d"') do ( set "$d=%%~dpf"& set "$d=!$d:%%~dpd=%%~dpd..\..\!" call:MoveRen "%%f" "!$d!"||set/a $e+=1 ) if !$e!==0 rd /s/q "%%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||exit/b 2 fc/b "%~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 |
|
Последний раз редактировалось amel27, 18-01-2011 в 12:47. Причина: посветка строки Отправлено: 06:32, 18-01-2011 | #16 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать Спасибо, а как быть с остановившимся процессом, касперский отключил, но ничего не изменилось?
p.s.: последний файл был M01_00.mat |
Отправлено: 06:50, 18-01-2011 | #17 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Tosyk:
P.S. антивирус может блокировать файлы и тем самым препятствовать их удалению/переименованию |
|
Отправлено: 07:21, 18-01-2011 | #18 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать Отключил антивирус, запустил скрипт снова, перемещено 3 500 файлов (вкупе 4 папки), полёт нормальный, в первый раз ошибок не заметил, постоянно наблюдал, на экране написано 1 file(s) moved - много раз.
p.s.: осталась самая полновесная папка - 56 000 элементов. |
Отправлено: 07:34, 18-01-2011 | #19 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать а с чем может быть связана невероятно низкая скорость работы скрипта? без касперского
примерно 2-3 файла в 5-9 минут виндовс на компе несколько дней, никаких лишних программ не стоит даже офиса нет |
Отправлено: 09:59, 18-01-2011 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Проблема с переносом разрешений при перемещении данных | 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 |
|