我尝试编写一个小脚本来自动创建mp3/mp4文件的几十个文件夹/子文件夹的播放列表(m3u),同时省略其中的各种其他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
}
Run Code Online (Sandbox Code Playgroud)
我尝试了几种变体,比如将"-match"交换为"-eq",但没有运气.顺便说一句,如果我从括号中省略"-or".mp4""那么它工作正常,但我需要它来匹配两者,并且只有两个mp3/mp4.
提前致谢.
至于你抱怨扩展,让我们从它开始.据推测,代码中存在错误; 此表达式/语法在技术上有效:
$_.extension -eq ".mp3" -or ".mp4"
Run Code Online (Sandbox Code Playgroud)
但显然意图是:
$_.extension -eq ".mp3" -or $_.extension -eq ".mp4"
Run Code Online (Sandbox Code Playgroud)
首先尝试更正的表达式.
归档时间: |
|
查看次数: |
13313 次 |
最近记录: |