«$ _. extension -eq» не работает, как задумано? - PullRequest
1 голос
/ 04 ноября 2010

Я попытался написать небольшой скрипт, чтобы автоматизировать создание списков воспроизведения (m3u) для десятков папок / подпапок файлов mp3 / mp4, но в нем отсутствовали различные другие файлы misc. Я очень мало знаю о Powershell, но мне удалось собрать воедино что-то, что почти работает. Единственное замечание: когда я использую «$ _. Extension -eq», он, похоже, не работает, или, по крайней мере, я не правильно его использую. Если я использую его, например, для сопоставления файлов log / txt во временной папке, это работает, но не в этом случае. Вот код -

$pathname = read-host "Enter path"
$root = Get-ChildItem $pathname | ? {$_.PSIsContainer}
$rootpath = $pathname.substring(0,2)
Set-Location $rootpath
Set-Location $pathname
foreach($folder in $root) {
Set-Location $folder
foreach($file in $folder) {
$txtfile =".m3u"
$files = gci | Where-Object {$_.extension -eq ".mp3" -or ".mp4"}
$count = $files.count
if($count -ge 2){
$txtfile = "_" + $folder.name + $txtfile
Add-Content $txtFile $files
}  
}
if(test-path $txtFile){
Add-Content $txtFile `r
}
Set-Location $pathname
}

Я пробовал несколько вариантов, таких как замена "-match" на "-eq", но не повезло. кстати, если я опущу "-or" .mp4 "" в скобках, то он будет работать нормально, но мне нужно, чтобы он совпадал с обоими, и только с обоими mp3 / mp4.

Заранее спасибо.

Ответы [ 2 ]

9 голосов
/ 04 ноября 2010

Насколько вы жалуетесь на расширение, давайте начнем с него. Предположительно есть ошибка в коде; это выражение / синтаксис технически действителен:

$_.extension -eq ".mp3" -or ".mp4"

Но очевидно, что намерение было:

$_.extension -eq ".mp3" -or $_.extension -eq ".mp4"

Попробуйте сначала исправленное выражение.

3 голосов
/ 08 ноября 2010

Я собираюсь добавить это как ярлык:

gci | Where-Object {".mp3",".mp4" -eq $_.extension}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...