Пакетное переименование PowerShell с помощью регулярных выражений?Не могу понять выражение - PullRequest
3 голосов
/ 22 ноября 2011

Итак, у меня есть группа файлов со следующими именами файлов:

52 39 118 070 13200 5480.txt
83 39 010 392 01000 9970.txt
37 39 880 163 17802 0473.txt

Я пытаюсь переименовать их во что-то вроде:

2012 Описание файла (52-39-118-070-13200-5480) .txt
Описание файла 2012 (83-39-010-392-01000-9970) .txt
Описание файла 2012 (37-39-880-163-17802-0473) .txt

Но я не могу понять, каким будет соответствующее регулярное выражение и как его кодировать в PowerShell. Я вижу множество примеров для удаления пробелов или подчеркиваний, но добавить нечего в строку.

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

Спасибо.

Ответы [ 3 ]

7 голосов
/ 22 ноября 2011

Вы можете сделать это с помощью однострочника (непосредственно для Rename-Item), но для простоты я использовал командлет Foreach-Object:

Get-ChildItem -Filter *.txt | Foreach-Object{   
   $NewName = '2012 File Description ({0}){1}' -f ($_.BaseName -replace '\s','-'),$_.Extension
   Rename-Item -Path $_.FullName -NewName $NewName 
}
2 голосов
/ 22 ноября 2011
"52 39 118 070 13200 5480.txt" -replace "(.*)(\.txt)",'2012 File Description ($1)$2'

дает:

2012 Описание файла (52 39 118 070 13200 5480) .txt

Важно: в строке замены используются одинарные кавычки, потому что знак доллара "$"символ должен быть экранирован, если он появляется в строке, заключенной в двойные кавычки.В качестве альтернативы я мог бы написать:

"52 39 118 070 13200 5480.txt" -replace "(.*)(\.txt)","2012 File Description (`$1)`$2"
1 голос
/ 22 ноября 2011

Вам не нужно регулярное выражение для этого. Как говорит Кен в комментариях, вы можете просто использовать конкатенацию (что очень просто в Powershell).

Что-то вроде:

gci Y:\MyFolder -filter '*.txt' | % {rename-item -path $_.fullname -newname "2012 File Description`($($_.basename)`).txt"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...