У меня есть функция (.bat) для поиска и переименования (или перемещения) любой папки с определенным именем папки (вызов "data"), со всем ее содержимым, по определенному пути (путь:\ Является ли конкретный маршрут, например, c:\ или ч :)
Мне нужно упростить это и заставить его работать.
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 с "data". Продолжайте искать и находите TEST2, а также переименовывайте в "data", не спрашивая.
Но в случае, когда обе папки (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 ГБ информации, этот процесс может занять несколько часов.
большое спасибо