Как я могу переименовать группу файлов, как
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
Вы можете использовать подстроку или регулярное выражение. Добавьте -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'}
Мы используем две группы захвата (...)(...)
и оставляем только вторую с $2
. Здесь вы должны использовать '
вместо "
Вы можете попробовать этот скрипт. Он запрашивает вас каждый раз, когда файл собирается переименовать. Вы можете устранить это поведение, удалив 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