遍历目录结构并将具有特定扩展名的文件向上移动一级

Walk through directory structure and move files with certain extensions up one level

我尝试递归遍历文件夹并将一些文件向上移动一级。如 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
光盘文件夹(doc)
移动 *.doc ../

成功了!

如有任何建议,我将不胜感激!

For /R %%G in (*.doc,*.mp3) do move "%%G" "%%~PG.."

请注意,您的 .. 引用指定 当前 目录 的父级,而不是每个文件的父级! for /R 命令 不会 更改当前目录。