2015-05-07 2 views
0

У меня есть большое количество файлов в нескольких каталогах с этим типом соглашения об именах: «BU1_KCG_RANDOM_030515.csv» и т. Д. Мне нужно удалить 16-й и 17-й символы. Таким образом, новое имя файла будет «BU1_KCG_RANDOM_0515.csv». Как я могу переименовать переименование нескольких каталогов соответственно? Пока у меня есть ниже, но не уверен, что будет дальше, любая помощь будет оценена. Благодаряудалить n-й символ из имени файла powershell

Get-ChildItem -Filter *.csv -Recurse | Rename-Item -NewName {$_.Name..................} 

ответ

1

Использование -replace :

Get-ChildItem -Filter *.csv -Recurse | 
foreach { $_ | rename-item -newname ($_.Name -replace '(.{15})..(.+)','$1$2') } 
+0

отличная, сработано совершенно. Спасибо – Mach1

0

Бит основной, например, не проверяет, если файл уже был переименован, но должно получить вас к следующему шагу

gci -filter *.csv -rec | % { Rename-Item $_ -newname ($_.Name.substring(0,15) + $_.Name.substring(17)) } 

где

gci = get-childitem 
% = for-each 
$_ = this (inside the for-each) 
0

I much prefe r mjolinor, но вы всегда можете делать что-то по-другому с PowerShell. Поскольку вы можете индексировать строку как массив символов, мы можем использовать небольшую нотацию массива, чтобы получить нужные вам символы.

$oldname = "BU1_KCG_RANDOM_030515.csv" 
$newname = -join $oldname[0..14 + 17..($oldname.Length)] 
$newname 
BU1_KCG_RANDOM_0515.csv 

Мы также должны использовать -join, чтобы преобразовать массив обратно в строку.

Смежные вопросы