PowerShell Rename-Item имя файла полосы

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

например "0001 filename.txt" > "0000.txt"

4 ответа

Решение

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

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

Замените "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

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

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

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

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

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

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

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

Rename-Item $Filename -NewName $a.Split()[1]
Другие вопросы по тегам