這有點棘手。我的解決方案假定版本號是現有文件夾名稱中最後一個空格之後的剩餘文本。
以下代碼將適當地重命名當前目錄中名稱中至少有一個空格的所有文件夾。它不會遞歸到子文件夾中。如果版本文本包含!
或=
,代碼將會中斷,但這不可能是一個問題。
@echo off
setlocal disableDelayedExpansion
for /d %%F in ("* *") do (
set "folder=%%F"
setlocal enableDelayedExpansion
for %%A in ("!folder: =\!") do (
for /f "eol=: tokens=* delims=v." %%B in ("%%~nxA") do (
if "%%~nxA" neq "v.%%~B" ren "!folder!" "!folder:%%~nxA=v.%%~B!"
)
)
endlocal
)
如果要遞歸到子文件夾,則外環是必需的,並且該文件夾必須以相反的順序,以使文件夾的最深首先處理進行排序。
@echo off
setlocal disableDelayedExpansion
for /f "eol=: delims=" %%D in ('dir /s /ad /b * ^| sort /r') do (
pushd "%%D"
for /d %%F in ("* *") do (
set "folder=%%F"
setlocal enableDelayedExpansion
for %%A in ("!folder: =\!") do (
for /f "eol=: tokens=* delims=v." %%B in ("%%~nxA") do (
if "%%~nxA" neq "v.%%~B" ren "!folder!" "!folder: %%~nxA= v.%%~B!"
)
)
endlocal
)
popd
)
到目前爲止你已經嘗試過了(http://mattgemmell.com/2008/12/08/what-have-you-tried/)? – rojo 2013-02-14 19:33:22