Переименовать файлы в папке по первым значениям
Подскажите, можно ли сделать скрипт, который бы переименовывал все файлы в папке по следующему принципу: Есть файлы "11 текст1.txt", "11 текст2.txt", "12 текст3.txt", "12 текст4.txt" и т.д. Надо, чтоб скрипт по первым значениям (они всегда числа) переименовывал их следующим образом: "11_12345678_1.txt", "11_12345678_2.txt", "12_12345678_1.txt", "12_12345678_2.txt", где 11 и 12 - это константы (равны искомым файлам), 12345678 - постоянное значение, а на конце 1,2,3 - это счётчик. Делаю это в Тотал Коммандере через массовое переименование, хотелось бы автоматизировать.
Ответы (1 шт):
PowerShell
$c_file_names="12345678"
$f = Get-ChildItem -Filter "*.txt"
echo $f
$cnt = @{}
ForEach ($file in $f){
if($file.Name -match '^\d+'){
$dig = $Matches[0]
}
if(-not $cnt.ContainsKey($dig)){
$cnt[$dig] = 0
}
$cnt[$dig]++
$new_fn ="{0}_{1}_{2}.txt" -f $dig, $c_file_names, $cnt[$dig]
Rename-Item -Path $file.FullName -Newname $new_fn
}
11 текст1.txt
11 текст2.txt
12 текст3.txt
12 текст4.txt
mre.ps1
11_12345678_1.txt
11_12345678_2.txt
12_12345678_1.txt
12_12345678_2.txt
mre.ps1
Попробуй строку поменяй на $new_fn ="{0:d2}_{1}_{2}.txt" -f [int]$dig, $c_file_names, $cnt[$dig]
01_12345678_1.txt
01_12345678_2.txt
11_12345678_1.txt
11_12345678_2.txt
12_12345678_1.txt
12_12345678_2.txt