
想要取出其中二個字,更改資料夾名稱
D:\222\Test1\01
D:\222\Test1\02
D:\222\Test1\03
D:\222\Test2\01
D:\222\Test2\02
D:\222\Test2\02
我才說BAT把一件很簡單的事弄的很複雜,怪不得被linux海放幾十條街,還好十幾二十年前有想出對打產品,只是.........推倒不了腦子固化的開發者,認為BAT無敵....
以下是powershell(windows7以上都有)的改名示範,你自己改
Get-ChildItem C:\222 -Folder | ForEach-Object { $_ | Rename-Item -NewName $_.Name.SubString(4)}
這是一個笨拙土法煉鋼的方法,用淺薄的powerShell知識寫成的,但可以輕易自己實現
$mainDIR= "D:\222"
$level1 = Get-ChildItem -Path $mainDIR
for($i=0; $i -le $level1.length; $i++){
    if($level1[$i].Name -match 'TEST[0-9]+'){#TEST父資料夾
        $tempPath=$level1[$i].Name
        $level2 = Get-ChildItem -Path "$mainDIR\$tempPath"
        for($j=0; $j -le $level2.length; $j++){
          if($level2[$j].Mode -eq'd-----'){
          $tempName = $level2[$j].Name
          $newName = $tempName.SubString(3,2)
          echo "$mainDIR\$tempPath\$tempName change to $mainDIR\$tempPath\$newName"
          Rename-Item -Path $mainDIR\$tempPath\$tempName -NewName $newName
          }
        }
    }
}
踹踹? 但如果子資料夾長度不一樣會出事XD
@ECHO OFF
setlocal EnableDelayedExpansion
cd\222
For /F %%A in ('dir /b /ad') do ( 
	cd %%A
	For /F %%B in ('dir /b /ad') do ( 
		set fromdir=%%B
		set todir=!fromdir:~3,2!
		echo !fromdir! to !todir!
		ren !fromdir! !todir!
	)
	cd ..
)
不能用軟體嗎?
ant renamer很好用
配合regular expression的話變化更多