Вы можете использовать [System.IO.Path] :: GetExtension, чтобы получить расширение файла следующим образом:
$ext = [System.IO.Path]::GetExtension('AB1234.gif')
, и вы можете получить первые буквенные символы имени файла, используя $matches
переменная, подобная этой:
if ('AB1234.gif' -match '^\D*') { $first = $matches[0]; }
, и вы можете построить новое имя файла следующим образом:
$first + '-0111-' + '1' + $ext
Вы можете заменить '1' выше на переменную, которую вы можете увеличиватьпроверив существующее свойство следующим образом:
$i = 1;
while (test-path ($first + '-0111-' + $i + $ext)) {$i++}
когда этот цикл завершится, вы получите нужное имя файла с $first + '-0111-' + $i + $ext
, и вы можете использовать его для переименования файла с помощью Rename-File
:
Rename-File 'AB1234.gif' ($first + '-0111-' + $i + $ext)
Теперь, оберните все это в цикл, и у вас должно быть это:
dir | ForEach-Object { ... }
для тестирования, добавьте параметр -whatif
в конец команды Rename-File
иPS скажет вам, что он будет делать вместо того, чтобы фактически выполнить действие.
спасибо, отметьте