2012-07-10 55 views
0

我基本上有這樣的設置:DOS批處理 - 重命名子目錄下的所有文件都具有子目錄名稱前綴

C:\Upload\A 
C:\Upload\B 
C:\Upload\C 
C:\Upload\D 
C:\Upload\E 

ABCDE總是不同的(產品ID)和意志總是不同的數量(它不總是5個子目錄)。每個子目錄包含24個圖像,編號爲01-24。

我需要創建一個批處理文件,查看上傳目錄,獲取每個子目錄的名稱,並將該名稱追加到包含在該子目錄中的每個圖像文件的開頭。

因此,C:\Upload\A\01.jpg將變成C:\Upload\A\A-O1.jpg以及每個子目錄中的其他23個圖像。

批處理文件需要爲Upload目錄中的每個子目錄執行相同的操作。

這聽起來非常複雜,我已經開始嘗試寫這篇文章了,在這篇文章中我還沒有任何值得分享的東西。

任何幫助將不勝感激。

@echo off 
for /d %%D in (C:\Upload\*) do (
    for /f "eol=: delims=" %%F in ('dir /b /a-d "%%D" ^| findstr /vbic:"%%~nD-"') do (
    ren "%%D\%%F" "%%~nD-%%F" 
) 
) 

我把額外的代碼,以防止重命名相同的文件兩次:

+0

你真的使用DOS嗎? (我懷疑它)還是某些版本的Windows? – dbenham 2012-07-10 16:33:55

回答

5

這將在「\上傳C」的子目錄重命名文件。您應該能夠安全地多次運行該腳本。

如果您想要重新命名每個子目錄樹中的文件,那麼代碼需要稍作更改。

@echo off 
for /d /r "C:\Utils" %%D in (*) do (
    for /f "eol=: delims=" %%F in ('dir /b /a-d "%%D" ^| findstr /vbic:"%%~nD-"') do (
    ren "%%D\%%F" "%%~nD-%%F" 
) 
) 
+0

謝謝......這就像我需要的一樣!用PHP完成同樣的事情有可能嗎? – Will 2012-07-16 18:22:21

+0

@WillIrvine - 對不起,我對PHP一無所知。如果您的原始問題得到滿意答覆,請不要忘記接受答案。 – dbenham 2012-07-16 18:34:44

相關問題