【发布时间】:2017-05-11 10:43:02
【问题描述】:
我尝试递归遍历文件夹并将某些文件上移一级。例如 PDF 和 DOC。 文件夹的结构是: 文件夹 1 -> 文件夹 2-> 文件夹 3 -> 文件夹(doc)-> *.doc, 文件夹(mp3)-> *.mp3.
我需要像这样改变它: 文件夹 1 -> 文件夹 2-> 文件夹 3 -> 文件夹(doc)、*.doc、文件夹(mp3)、*.mp3。
所以我有很多这样的文件夹。并且无法手动执行此操作。
我试过制作脚本: v1.0
For /R %%G in (*.doc,*.mp3) do move %%G ../
v1.1
For /R %%G in (*.doc,*.mp3) do move %%~nxG ../
v1.2
For /R %%G in (*.doc,*.mp3) do (
set B=%%~nxG
move %%B ../
但它不起作用。 我做错了什么?
如果我手动执行此操作:
CD 文件夹 1
CD 文件夹 2
CD 文件夹 3
CD 文件夹(doc)
移动 *.doc ../
成功了!
如果有任何建议,我将不胜感激!
【问题讨论】:
-
删除结尾的
/。还要在 move 命令中引用%%Gvar,以便它可以处理目录和文件名中的空格for /R %%G in (*.doc,*.mp3) do move "%%G" .. -
For /R %%G in (*.doc,*.mp3) do move "%%G" "%%~PG.."请注意,您的..引用指定当前目录的父目录,而不是每个文件的父目录!for /R命令不改变当前目录。 -
非常感谢!正是需要的!!!
-
@Aacini 对不起我的摔倒。我是第一次使用stackoverflow。请发表您的评论作为答案!
标签: batch-file windows-7