如何批量重命名包含子文件夾和文件的文件夾A中的文件,格式名爲filename_ex.doc,並使它們看起來像filename.doc?cmd批量重命名子文件夾/文件
我一直在嘗試做一段時間,這是一個史詩般的失敗。請幫忙。
如何批量重命名包含子文件夾和文件的文件夾A中的文件,格式名爲filename_ex.doc,並使它們看起來像filename.doc?cmd批量重命名子文件夾/文件
我一直在嘗試做一段時間,這是一個史詩般的失敗。請幫忙。
我認爲你還想重命名子文件夾中的文件,這也是你對馬丁詹姆斯的第二條評論中的方向有問題的地方。我猜你用DIR/S選項試過了這個代碼。但是你非常接近:-)你只需要使用2個循環!
編輯 - 固定代碼一旦輸出相貌端正,降ECHO,使其功能。
@echo off
for /r %%D in (.) do (
pushd "%%~fD"
for /f "tokens=1-3 delims=_." %%A in ('dir /b *_ex.ext 2^>nul') do echo ren "%%A_%%B.%%C" "%%A.%%C"
popd
)
以上將工作,只要每個文件名沒有比出現在_ex.ext
任何_
或.
等。路徑中的字符不應該是任何問題,只是文件名是一個問題。
下面是一個更強大的解決方案,應該可以處理任何文件名(unicode名稱除外)。它也快得多。它使用子字符串操作,並且必須知道要從名稱中刪除的字符數。在你的例子中它是3個字符。再次,刪除ECHO一旦結果命令看起來正確。
@echo off
setlocal disableDelayedExpansion
for /f "delims=" %%F in ('dir /b /s *_ex.ext') do (
set "old=%%F"
set "new=%%~nF"
setlocal enableDelayedExpansion
echo ren "!old!" "!new:~0,-3!.ext"
endlocal
)
@MartinJames每當我試圖一批「編程」,我失敗瞭如此巨大,我永遠會期間發佈任何代碼片段我公司開發的這些步驟;-) – 2012-04-24 07:28:56
我已經試過FOR/F, FOR/D所有這些東西,並從這裏閱讀文件:[鏈接](http://ss64.com/nt/for.html)。目前爲止沒有像樣的結果...... :(我真的很討厭windows批量編程。 – Alex 2012-04-24 08:05:16
@MartinJames:也嘗試從命令行:'for「tokens = 1-3 delims = _」。%a('dir * _ex.ext ')做回聲%a_%b。%c' ...這是得到卡住,如果我有文件夾/子文件夾或其他文件包含字符的路徑:「。」和「_」 – Alex 2012-04-24 08:15:54