2014-11-06 319 views
1

我有一個大的(aprox.150000)tif文件,它們都具有相同的文件名。他們是唯一的,因爲他們所在的目錄結構。將文件夾內的文件批量重命名爲父文件夾名稱

我想批量重命名tiff文件,使它們變得唯一,基於它們所在的目錄structre。

有沒有人有任何方法達到這個目標?

我正在使用Windows Server 2012,所以使用cmd腳本,批處理文件或windows GUI工具的解決方案將是完美的。

理想情況下,這是我想acheieve,但如果我必須有更多或所有的目錄結構在最終文件名thsi仍然是非常非常有幫助。

C:\A_001\B_0001\ABC\0001.tif -> ABC.tif 

C:\A_001\B_0001\JKL\0001.tif -> JKL.tif 

C:\A_001\B_0001\XYZ\0001.tif -> XYZ.tif 

C:\A_001\B_0002\123\0001.tif -> 123.tif 

C:\A_001\B_0002\456\0001.tif -> 456.tif 

C:\A_001\B_0002\789\0001.tif -> 789.tif 
+0

可能重複([如何根據通過批處理腳本他的文件夾名稱重命名文件] http://stackoverflow.com/questions/14055495/how-to-rename-a-file-according-his-文件夾名稱通過批處理腳本) – Lanting 2014-11-06 09:50:24

+0

現在準備答案。同時你可以檢查這個http://stackoverflow.com/a/25675706/388389 – npocmaka 2014-11-06 09:52:20

+0

冒號不應該在那裏爲測試案例2 ... – Monacraft 2014-11-06 10:01:35

回答

1

這應該工作:

pushd C:\A_001\B_0002 

for /d %%a in (*) do (
if exist "%%~a\0001.tif" ren "%%~a\0001.tif" "%%~a.tif" 
) 

popd 

哪些應該做你想要什麼。我已經測試過這個,它在我的電腦上工作正常。

0

我在我的F盤上做了一個類似的foldertree。

從文件夾 「A_001」

FOR /F "TOKENS=3,4,5* DELIMS=\" %A IN ('DIR "%CD%\*.tif" /s /b /a:-d') DO MOVE "%CD%\%A\%B\%C" "%CD%\%A_%B%~xC" 

內啓動commandprompt將導致:

MOVE "F:\A_001\B_0001\123\0001.tif" "F:\A_001\B_0001_123.tif" 
MOVE "F:\A_001\B_0001\ABC\0001.tif" "F:\A_001\B_0001_ABC.tif" 
MOVE "F:\A_001\B_0002\123\0001.tif" "F:\A_001\B_0002_123.tif" 
MOVE "F:\A_001\B_0002\ABC\0001.tif" "F:\A_001\B_0002_ABC.tif" 

所以你必須在文件夾 「A_001」 所有文件。

希望這會幫助嗎?

0
@echo off 
for /f "delims=" %%F in ('dir /b /s /a-d "C:\A_001\0001.tif"') do (
    for %%D in ("%%~dpF.") do ren "%%F" "%%~nD%%~xF" || echo unable to rename "%%F" 
) 
相關問題