如何让Robocopy遍历源文件夹的子目录以移动目标MP4文件?
如何让Robocopy遍历源文件夹的子目录以移动目标MP4文件?
嘿,我来帮你解决这个问题!你的Robocopy脚本没生效的核心原因是:默认情况下,Robocopy只会扫描源目录的根文件夹,不会自动深入到那些游戏子目录里找MP4文件。咱们只需要简单调整参数或者脚本,就能让它遍历所有子目录完成移动操作。
方案一:保留原游戏子目录结构移动
如果你希望移动后,目标目录F:\Videos\Cut Clips里也保持EscapeFromTarkov、LeagueOfLegends这类子文件夹(对应存放各游戏的剪辑文件),只需要给Robocopy加一个/S参数即可。
修改后的批处理脚本:
@Echo Off Set "source=F:\Videos\Clips" Set "destination=F:\Videos\Cut Clips" %__AppDir__%Robocopy.exe "%source%" "%destination%" "*.mp4" /Mov /S Exit /B
参数解释:
/S:让Robocopy遍历源目录下所有非空的子目录,这样就能找到每个游戏文件夹里的MP4文件/Mov:保持你原来的需求——移动文件(完成后源文件会被删除,而不是复制)
执行这个脚本后,你会看到F:\Videos\Cut Clips下自动生成对应游戏的子文件夹,里面放着从源目录移过来的MP4剪辑。
方案二:将所有MP4集中移动到目标根目录(不保留子目录)
如果你想把所有游戏的MP4剪辑直接放到F:\Videos\Cut Clips的根目录下,不需要保留子文件夹结构,可以用for /r循环来遍历所有子目录的MP4文件,再逐个移动。
修改后的批处理脚本:
@Echo Off Set "source=F:\Videos\Clips" Set "destination=F:\Videos\Cut Clips" :: 递归遍历源目录下所有子目录的MP4文件,移动到目标根目录 for /r "%source%" %%f in (*.mp4) do ( move "%%f" "%destination%\" ) Exit /B
这段脚本的逻辑是:
for /r:递归遍历source目录下的所有子文件夹%%f:代表找到的每个MP4文件的完整路径move命令:把找到的MP4文件移动到目标目录的根目录下
如果遇到重名的文件,move命令会提示你是否覆盖,你可以根据需求调整(比如加/Y参数强制覆盖,改成move /Y "%%f" "%destination%\")。
备注:内容来源于stack exchange,提问作者Dpas_23
相关产品推荐
相关产品推荐

