2016-03-22 2 views
0

Может ли «Rename-Item» использоваться для удаления имени файла без расширения только для того, чтобы оставить пару символов в начале имени файла?PowerShell Rename-Item strip filename

для ex. «0001 filename.txt»> «0000.txt»

ответ

1

Вы можете использовать комбинацию с подстроки, как это:

$a = "0001 filename.txt" 
Rename-Item -Path $a -NewName $("$($a.Substring(0,4)).txt") 
+0

Это решение удовлетворяет мои потребности лучше. Спасибо. – Rayearth

0

Если вы всегда используете один и тот же конвенции, как в вашем примере, цифр и Non -Digits

вы можете использовать:

$Filename = Get-ChildItem 'C:\folder\0001 filename.txt' 
Rename-Item $Filename -NewName ($Filename.Name -replace "\W+\w+[^.txt]") 

Если соглашение отличается вам необходимо создать различные регулярные выражения

0

Я тоже выброшу здесь. Вы можете просто использовать метод .Split(), чтобы разбить строку на пробелы (или любой символ внутри скобок). Мы разделим, а затем индексируем нужные значения.

$a = "0001 filename.txt" 
$a.Split()[1] 
>filename.txt 

Если мы хотим сделать это, чтобы переименовать ваш файл, это будет выглядеть так.

Rename-Item $Filename -NewName $a.Split()[1] 
0

Замените "E: \ 0000 File1.txt" на путь к файлу. Я предполагаю, что у вас много файлов для этого, вот формат для нескольких файлов.

$File = "E:\File1.txt","E:\File2.txt","E:\File3.txt" 

Это полный код. Вы также можете предоставить каталог, полный файлов, но если в этом каталоге есть подпапки, они могут быть переименованы. Вам нужно только изменить первые две строки по своему вкусу.

$File = "E:\0000 File1.txt","E:\0000 File2.txt" 
$CharsToKeep = 7 

Get-ChildItem $File | 
ForEach-Object{ 
    $Orig = $_.fullname 
    $NewName = ($_.BaseName).Substring(0,$CharsToKeep) + $_.Extension 
    Rename-Item -path $Orig -NewName $NewName 
} # end Foreach. Also end Get-ChildItem