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

后端 未结 7 2499
故里飘歌
故里飘歌 2021-02-19 18:03

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 direc

相关标签:
7条回答
  • 2021-02-19 18:34

    This works for me:

    move c:\fromDir\*.* c:\toDir\
    
    0 讨论(0)
  • 2021-02-19 18:35

    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...

    0 讨论(0)
  • 2021-02-19 18:35

    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.

    0 讨论(0)
  • 2021-02-19 18:40

    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
    
    0 讨论(0)
  • 2021-02-19 18:45

    On windows batch:

    FOR /d %%i IN (MySourceDirectory\*) DO move "%%i" MyTargetDirectory\%%~ni
    

    The above command moves all directories found in MySourceDirectory (/d) to MyTargetDirectory using the original directory name (~ni) Robocopy's move first does a copy, then delete, so it is slower.

    0 讨论(0)
  • 2021-02-19 18:48
    FOR /d %%i IN (*) DO IF NOT "%%i"=="target" move "%%i" target
    
    0 讨论(0)
提交回复
热议问题