如何重命名一组文件,例如
admin_ball_126608454.gma
another_thing_384157357.gma
至
ds_126608454.gma
ds_384157357.gma
如何重命名一组文件,例如
admin_ball_126608454.gma
another_thing_384157357.gma
至
ds_126608454.gma
ds_384157357.gma
Answers:
您可以尝试此脚本。每当文件将被重命名时,它都会提示您。可以通过从脚本中删除IF..ELSE子句来消除此行为。添加了提示以确保您不会意外重命名文件夹或使用任何错误的名称重命名文件
@echo off
setlocal EnableDelayedExpansion
SET /P path=Enter the path please :
ECHO The Path entered is %path%.
CD %PATH%
ECHO Current Directory is %CD%
FOR /R %path% %%G IN (*.*) DO (
SET name=%%~nG
SET last=!name:~-10!
SET/P cho="ECHO File !name!%%~xG will be renamed to ds_!last!%%~xG Do you want to continue (y/n) ?"
IF !cho!==y (REN "!name!%%~xG" "ds_!last!%%~xG") ELSE (ECHO Not Renamed)
)
pause
您可以使用子字符串或正则表达式。追加-whatif
进行测试运行-但无需进行任何更改。我敢肯定,在PowerShell中还有很多方法可以做到这一点
Dir "C:\yourfolder" | ren -NewName {
"ds" + $_.basename.substring($_.basename.length-10,10) + $_.extension
} -whatif
Dir "C:\yourfolder" | ren -NewName {$_.name -replace "^.*(?=.{10}\.)","ds"}
我们使用前瞻 (?= )
来匹配^.?
最后10个字符之前的所有内容.{10}
Dir "C:\yourfolder" | ren -NewName {$_.name -replace '(.*)(.{10}\.)', 'ds$2'}