у меня есть функция (.bat) искать и переименовывать (или перемещать) любую папку с определенным именем folder (назовите "data"), со всем ее содержимым, по определенному пути (path: - это конкретный маршрут, такой как c: или h:)
мне нужно упростить его и заставить работать.
call:test "TEST1"
call:test "TEST2"
:: funcion test
@echo off
pause
goto:eof
:test
set test=%1
CD /D path:
if exist "%test%" (goto make) else (goto end)
:make
MOVE /Y "%test%" data
FOR /F %%x IN ("%test%") DO REN "%%x" data
FOR /F "tokens=*" %%G IN ('DIR /B /AD /S "%test%"') DO MOVE /Y "%%G" data
:end
echo OK
goto:eof
папки TEST1 и TEST2 содержат много файлов и вложенных папок. Проблема в том, что я использую три команды, чтобы сделать эту работу и не на 100% работает.
MOVE /Y "%test%" data
FOR /F %%x IN ("%test%") DO REN "%%x" data
FOR /F "tokens=*" %%G IN ('DIR /B /AD /S "%test%"') DO MOVE /Y "%%G"
мне нужно переименовать папки TEST1 и TEST2, где бы они ни находились в пределах пути (могут находиться в корне или во вложенных папках. Оба должны быть переименованы (объединены) как "данные").
пример: test1 и test2 папки содержимое (файлы и подпапки). Тот." bat "поиск в путь, чтобы найти TEST1 и когда он находит переименован TEST1 с "данными". Продолжайте искать и найти TEST2 и переименовать в "данные" тоже без разрешения.
но, в случае обе папки (test1 и test2) находятся в одном расположение, оба должны быть объединены (один переопределяет другой). важно сделать это, не спрашивая.
но "MOVE / Y" не перезаписывает папки (только файлы). Я думаю, что решение может заключаться в том, что вместо перезаписи переименуйте дубликат файла или папки, чтобы избежать этой команды сбоя
Примечание: ранее я использовал Robocopy с опцией "переместить"...
SET MoveDirSource=path:"%test%"
SET MoveDirDestination=path:data
MKDIR "%MoveDirDestination%"
FOR %%i IN ("%MoveDirSource%*") DO MOVE /Y "%%i" "%MoveDirDestination%%%~nxi"
FOR /D %%i IN ("%MoveDirSource%*") DO ROBOCOPY /MOVE /E /W:5 "%%i" "%MoveDirDestination%%%~nxi"
но это не жизнеспособно, потому что robocopy, сначала скопируйте из источника в место назначения, а затем удалите в источнике. И если папки TEST1 или TEST2 содержат 2 или 6 ГБ информации, этот процесс может занять несколько часов.
Спасибо большое