#powershell
#powershell
Вопрос:
cd ("F:OffcloudGossip GirlSeason 01")
Dir | Rename-Item -NewName { $_.Name -replace " ","" }
Dir | Rename-Item -NewName { $_.Name -replace "'","" }
Dir | Rename-Item -NewName { $_.Name -replace "a","" }
Dir | Rename-Item -NewName { $_.Name -replace "b","" }
Dir | Rename-Item -NewName { $_.Name -replace "c","" }
Dir | Rename-Item -NewName { $_.Name -replace "d","" }
Dir | Rename-Item -NewName { $_.Name -replace "e","" }
Dir | Rename-Item -NewName { $_.Name -replace "f","" }
Dir | Rename-Item -NewName { $_.Name -replace "g","" }
И т. Д. В принципе, я хочу удалить все, кроме небольшого списка (0123456789x). Могу ли я как-нибудь это сделать? Мой текущий сценарий занимает очень МНОГО времени. Кроме того, как я могу изменить свой сценарий, чтобы он также просматривал все дочерние каталоги?
Комментарии:
1. Объясните
"remove everything except a small list"
. Что вы хотите сделать? Или вы хотите такого же поведения, просто написанного более коротким способом?
Ответ №1:
Вы можете использовать этот -Recurse
параметр для поиска по уровням каталогов.
$SearchFolder = "F:OffcloudGossip GirlSeason 01"
Get-ChildItem -Path $SearchFolder -Recurse `
| Rename-Item -NewName {
($_.BaseName -replace " |'|a|b|c|d|e|f|g","") $_.Extension
}
Затем, если вы используете оператор regex
‘s ИЛИ ( |
) в своей -replace
строке, вы можете заменить все строки сразу. Замена выполняется на BaseName
то, которое является именем файла без расширения. Затем мы просто добавляем расширение в конец.
Комментарии:
1. Спасибо.. еще одна проблема, могу ли я заставить его не удалять расширение файла? Скажем, последние 4 символа?
2. Спасибо. хотя пришлось разбить его на несколько сценариев, он проверяет только 10 или около того редакторов..
Ответ №2:
используйте эту команду :
$path = "F:OffcloudGossip GirlSeason 01"
dir $path -Recurse -Include * |Rename-Item -NewName { $_.Name -replace " |'|a|b|c|d|e|f|g|h","" }