2013-02-25 152 views
0

移動文件我有通過文件夾

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

回答

0

你的命令創建像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" 
0

使用本

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

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