我正在尝试编写一个Windows批处理文件,它可以将给定源目录中的所有目录移动到该源目录内存在的目标目录中。
显然,我的移动命令只需要应用于目录,并排除目标目录不被处理。
这是否可以使用Windows批处理命令实现?
我正在尝试编写一个Windows批处理文件,它可以将给定源目录中的所有目录移动到该源目录内存在的目标目录中。
显然,我的移动命令只需要应用于目录,并排除目标目录不被处理。
这是否可以使用Windows批处理命令实现?
FOR /d %%i IN (*) DO IF NOT "%%i"=="target" move "%%i" target
FOR /d %%i IN (MySourceDirectory\*) DO move "%%i" MyTargetDirectory\%%~ni
使用Windows 7自带的robocopy时,我发现/XD选项无法防止源文件夹被移动。
解决方案:
SET MoveDirSource=\\Server\Folder
SET MoveDirDestination=Z:\Folder
FOR /D %%i IN ("%MoveDirSource%\*") DO ROBOCOPY /MOVE /E "%%i" "%MoveDirDestination%\%%~nxi"
这将循环遍历顶级文件夹,并为每个文件夹运行robocopy。
这样做是行不通的 - 即使你明确排除目标目录,你也会收到一个错误提示,告诉你目标目录在源目录内部或者类似的信息。你可以将目录移动到一个不在源目录下的临时位置,然后再将它们移动到目标位置。
顺便说一句,使用move
命令无法让你指定要排除的文件夹。为此,你可以使用xcopy
,但请注意它会复制文件夹,而不是移动它们。如果这很重要,你可以随后删除任何你想要删除的东西,只要确保不要删除目标目录,因为它位于源目录中...
move c:\fromDir\*.* c:\toDir\