2017-05-11 12 views
0

我尝试以递归方式遍历文件夹并将某个文件的某个级别向上移动。如PDF & DOC。 文件夹的结构是: 文件夹1 - >文件夹2->文件夹3 - >文件夹(doc) - > * .doc,文件夹(mp3) - > * .mp3。浏览目录结构并将文件的某些扩展名向上移动一个级别

我需要像这样更改: 文件夹1 - >文件夹2->文件夹3 - >文件夹(doc),* .doc,文件夹(mp3),* .mp3。

所以我有很多这样的文件夹。而且手动做这件事是不可能的。

我试过化妆脚本: 1.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)
MOVE的* .doc ../

它的作品!

我将不胜感激任何意见!

+2

删除尾部的'/'。另外引用move命令中的'%% G' var,以便它可以处理目录和文件名中的空格。(for/R %% G in(* .doc,*。mp3)do move“%% G”..' – elzooilogico

+0

'For/R %% G in(* .doc,*。mp3)do move“%% G”“%%〜PG ..”'请注意,您的'..'引用指定**当前的父级** directory_,而不是每个文件的父项! 'for/R'命令不会改变当前目录。 – Aacini

+0

非常感谢!这正是需要的! – Yurok

回答

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

请注意,您..参考指定当前目录的父母,每个文件的不是父! for /R命令确实不是更改当前目录。

相关问题