重命名(或移动)特定路径上的文件夹,子文件夹和文件


1

我有一个函数(.bat)来搜索和重命名(或移动)具有特定名称的文件夹(称为“数据”)的任何文件夹,且其所有内容都保留在特定路径上(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,然后也将其重命名为“ data”,而无需询问

但是,在两个文件夹(TEST1和TEST2)都位于同一位置的情况下,两个文件夹都应合并(一个覆盖另一个)。重要的是要做到这一点而不问

但是“ MOVE / Y” 不会覆盖文件夹(仅文件)。我认为解决方案可能是代​​替覆盖,而是重命名文件或文件夹重复项以避免此失败命令

注意:以前我将Robocopy与“ move”选项一起使用...

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"

但这是不可行的,因为自动复制首先从源复制到目标,然后在源删除。并且,如果TEST1或TEST2文件夹具有2或6 GB的信息,则此过程可能需要几个小时。

非常感谢


谢谢@DavidPostill这就是为什么我出版了。为了帮助我纠正这一点。请记住,TEST1和TEST2文件夹可以在子文件夹中重复进行
BrianC

Answers:


1

我会用

ROBOCOPY“%Test%”数据/ MOVE / E

Robocopy默认情况下安装在Windows中,一次即可完成您想要的所有操作。


谢谢,但是robocopy是不可行的。在“注意:”中阅读原因。无论如何
BrianC '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.