2017-05-12 193 views
0

我試圖重命名一組文件遞歸使用僅在某一級別的父級。我在文件:根據父目錄重命名文件

\test\d1\d2\d3\000.png 
\test\d4\d5\d6\000.png 
\test\d7\d8\d9\000.png 

這應該轉換爲:

\test\d1\d2\d3\d1.png 
\test\d4\d5\d6\d4.png 
\test\d7\d8\d9\d7.png 

與/ R並沒有一個明確的解決方案,使上一級文件夾重命名爲遞歸探索。

000.png是唯一的文件,沒有在中間方向。

我一直在嘗試使用:

@echo off 
pushd "C:\Users\test" 
for /d %%P in (*) do for /f "delims=" %%F in ('dir /b /s /a-d "%%P"') do rename "%%F" "%%P_%%~nxF" 
popd 

從另一個線程,但我無法理解該腳本的作用。

+0

指定一定的水平,從頂部或從文件計數?只有文件'000.png'?這些文件是否也存在於中間文件夾中?到目前爲止,你的代碼是什麼? [SO]不是腳本寫作服務。 – LotPings

+0

000.png是唯一的文件,沒有中間目錄。 – Joesh

+1

不要在評論中放置代碼,編輯您的問題。 – LotPings

回答

0
@echo off 
pushd "C:\Users\test" 
for /d %%P in (*) do for /f "delims=" %%F in ('dir /b /s /a-d "%%P\000.png" 2^>NUL' 
) do echo rename "%%~fF" "%%~nP%%~xF" 
popd 
  • PUSHD保存有當前文件夾到堆棧,並轉移到指定文件夾
  • POPD還原舊的文件夾。
  • for /d使用%%P從「C:\ Users \ test」迭代所有子文件夾,這是您的所選名稱。
  • for/f解析從該文件夾開始獲取所有000.png文件的dir輸出。
  • %%~nP得到使用~n改性劑的文件夾(D1/D4/D7)的唯一的名稱(參見for /?