Не зная о вашем текущем подходе (обратите внимание на комментарий Герхарда), вы можете попробовать что-то вроде следующего
Для приведенного ниже тест-скрипта я создал новый каталог, содержащий скрипт и подкаталог images
. Эта папка содержит другой каталог с именем renamed
. Это позволяет нам взглянуть на оригинальные файлы, не переименовывая их
$img_path = "$PSScriptRoot\images"
$rename_path = "$PSScriptRoot\images\renamed"
foreach ($img in (Get-ChildItem "$img_path\*.jpg")) {
# note the single quotes at the end - otherwise you need to escape the $-sign
$new_name = $img.Name -replace "_E(\d\d\d\d)", '_$1'
# no image with that name exists
if (!(Test-Path "$rename_path\$new_name")) {
Copy-Item $img "$rename_path\$new_name"
} else {
# image-name already used
$i = 1
$inc_name = $new_name -replace ".jpg", "_$i.jpg"
# creating a new image-name by appending _1, _2, etc. until
# the name is not already used
while (Test-Path "$rename_path\$inc_name") {
Write-Host "Found $inc_name"
$i++
$inc_name = $new_name -replace ".jpg", "_$i.jpg"
}
Copy-Item $img "$rename_path\$inc_name"
}
}
Имейте в виду, что это, безусловно, не идеальный способ решения этой проблемы. Пожалуйста, попробуйте объяснить вашу текущую проблему немного подробнее.
Поскольку вы говорите, что хотите добавить что-то вроде (0)
или (1)
к имени файла, если оно уже существует: почему должны уже существовать? Не стесняйтесь поделиться демо-каталог-контент: -)