2015-12-14 2 views
1

У меня есть куча файлов с одной и той же строки в них и хотели бы, чтобы удалить ихПереименование файлов с помощью PowerShell, чтобы удалить строку

Dir | Rename-Item -NewName { $_.Name -replace " (my string here)","" } 

Однако, это не кажется, не удаляя строки из всех файлы, которые имеют эту строку в имени файла. Нужен ли мне ReGex?

Существует пространство перед (который заставляет меня думать, мне нужно Regex в некотором роде

ответ

1

Так что я был прав, о необходимости Regex с тем, как Powershell делает материал:.

Dir | Rename-Item -NewName { $_.Name -replace "(\s*) \(STRING HERE\)","" } 
1

-replace действительно использовать . регулярное выражение (без учета регистра) Вы можете достичь того же результата без регулярных выражений с использованием .replace, который является string метод следующим образом:

Get-ChildItem -path 'your path' | 
Rename-Item -NewName { $_.BaseName.replace(' (my string here)','') + $_.extension } -WhatIf 

обратите внимание на использование $_.basename вместо name. это потому, что имя состоит из имени файла и расширения, а basename - нет.

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