переименование (или перемещение) папок, вложенных папок и файлов по определенному пути

у меня есть функция (.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 ГБ информации, этот процесс может занять несколько часов.

Спасибо большое

30
задан BrianC
17.01.2023 14:06 Количество просмотров материала 2398
Распечатать страницу

1 ответ

Я хотел бы использовать

ROBOCOPY" %Test% " Data /MOVE / E

Robocopy устанавливается по умолчанию в windows и делает все, что вы хотите за один проход.

2
отвечен DrNoone 2023-01-18 21:54

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх