Windows batch command to move all folders in a directory with exceptions

一笑奈何 提交于 2019-12-05 16:43:42

问题


I am trying to write a Windows Batch file that will allow me to move all directories within a given source directory into a target directory that exists within that source directory.

Obviously my move command with need to only apply to directories and also exclude the target directory from being processed.

Is this possible with a Windows batch command?


回答1:


Robocopy (present in recent versions of windows or downloadable from the WRK) can do this, just use the /xd switch to exclude the target directory from the copy;

robocopy c:\source\ c:\source\target\ *.* /E /XD c:\source\target\ /move



回答2:


FOR /d %%i IN (*) DO IF NOT "%%i"=="target" move "%%i" target



回答3:


That won't work - you'll get an error telling you the target directory is inside the source directory or so, even if you explicitly exclude the target directory. What you can do is move the directories to a temporary location which is not under the source, and then move them into the target.

BTW, using the move command won't let you specify folders to exclude. For that you can use xcopy, but note that it will copy the folders, as opposed to move them. If that matters, you can delete whatever you want afterwards, just make sure you don't delete the target dir, which is in the source dir...




回答4:


Using robocopy included with Windows 7, I found the /XD option did not prevent the source folder from also being moved.

Solution:

SET MoveDirSource=\\Server\Folder
SET MoveDirDestination=Z:\Folder
FOR /D %%i IN ("%MoveDirSource%\*") DO ROBOCOPY /MOVE /E "%%i" "%MoveDirDestination%\%%~nxi"

This loops through the top level folders and runs robocopy for each.




回答5:


NB: Robocopy mentioned above using the /move flag will copy the files and then delete them from the source folder rather than moving the files. This may be critical if moving large numbers of files from one location to another on the same disk (because move is virtually instantaneous, while copying is a much slower operation)




回答6:


This works for me:

move c:\fromDir\*.* c:\toDir\


来源:https://stackoverflow.com/questions/7461373/windows-batch-command-to-move-all-folders-in-a-directory-with-exceptions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!