Windows上的递归移动命令

8 windows command-line

我需要做一个.sh的.bat副本,我不太了解Windows cmd.在Linux上我能做到

mv ...
Run Code Online (Sandbox Code Playgroud)

要么

rsync -a SOURCE/ DEST/ --remove-sent-files --ignore-existing --whole-file
Run Code Online (Sandbox Code Playgroud)

但Windows"移动"不能做同样的事情

也许有一个简单的窗口替代,更简单,更高效

for /R c:\sourceFolder\ %%G in (*) do ( move /Y "%%G" c:\destinationFolder\ )
Run Code Online (Sandbox Code Playgroud)

Linux mv似乎更新了目录指针,但上面的Windows命令会做些什么呢?我想这对于我需要频繁移动的大文件夹并不是一个好主意

Dan*_*dor 13

Robocopy为我创造了奇迹:

 robocopy c:\cache c:\cache-2012 ?????-2012*.hash /S /MOV
Run Code Online (Sandbox Code Playgroud)

我用它来移动所有带有特定掩码的文件c:\cache及其众多的子目录.

  • robocopy的主要问题是它实际上并没有移动文件,而是复制它们并删除原始文件.当在同一个驱动器中移动文件时,能够实际移动文件(它是即时的)而不是仅仅复制它们是一个很大的区别(如果你想移动大文件,它会慢得多).使用"move"命令的要点是,如果在同一个驱动器中移动文件,它真的很快,但不幸的是,在使用通配符时它不会移动子目录. (3认同)

Ray*_*hen 8

move命令可以移动目录和文件.

cd /d C:\sourceFolder
rem move the files
for %%i in (*) do move "%%i" C:\destinationFolder
rem move the directories
for /d %%i in (*) do move "%%i" C:\destinationFolder
Run Code Online (Sandbox Code Playgroud)

  • 这不适合%i吗?(单个%?) (2认同)