通过文件夹

问题描述:

移动文件我有通过文件夹

d:\文件夹\ 1.JPG,
d:\文件夹\ 2.JPG,
d:\文件夹\ 3.JPG
... 。等

我需要

d:\文件夹\ 1 \ 1.JPG,
d:\文件夹\ 2 \ 1.JPG,
d:\文件夹\ 3 \ 1.JPG
....

此代码

FOR /R %I IN (*.jpg) DO (md %~nI; move %I %~dI%~pI%~nI\1.jpg) 

创建像D:\folder\1\1.jpg\

我做什么错了文件夹?

+0

执行此操作。产生错误,但它起作用。 'FOR/R%I IN(* .jpg)DO(md%〜nI&move%I%〜dpI%〜nI \ 1.jpg)' – Technobulka 2013-02-25 07:15:50

你的命令创建像D:\folder\1\1.jpg\文件夹,因为;是参数分隔符,不能用于菊花链的命令。对于后者,你必须使用&

您的命令还有其他几个问题。

  • 您在当前工作目录(md %I)创建目标文件夹,但是如果使用的完整路径(%~dI%~pI%~nI\1.jpg)移动文件。只要当前工作目录中有.jpg文件的子文件夹,就会失败。
  • 您不引用变量,因此当路径或文件名称包含空格时,命令也会失败。
  • 将文件移动到子文件夹创建了递归文件夹遍历的无限循环(for /r)。

我建议运行两个单独的回路,一个用于创建目标文件夹,第二个用于移动文件:

for /r %I in (*.jpg) do @mkdir "%~dpnI" 
for /r %I in (*.jpg) do @move "%~fI" "%~dpnI\1%~xI" 

使用本

FOR %I IN (*.jpg) DO (
    MD %~nI & copy %I %~nI\1.jpg & del %I) 

使用&管道连续命令。也move不能重命名,所以我只是用copy