想要取出其中二個字,更改資料夾名稱
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的話變化更多