电源壳 |用于排除子文件夹或限制深度的随机电影脚本
Powershell | Random-Movie-Script to exclude sub folders or limit depth
所以我在 google 上找到了这个脚本,可以打开并播放我的电影文件夹中的随机电影。
我在主电影文件夹中有脚本,所有电影都在这个文件夹的子文件夹中。在那些特定的电影文件夹中是电影文件,有时还有另一个文件夹,其中包含额外内容和花絮。
我遇到的问题是,脚本打开了我在所述子文件夹中的电影的额外内容和花絮视频文件。
这是我的剧本运行。
$formats = @("*.avi","*.mp4","*.flv","*.mpg","*.wmv","*.mkv","*.mov")
$dir = Split-Path $MyInvocation.MyCommand.Path
gci "$dir\*" -include $formats -recurse | Get-Random -Count 1 | Invoke-Item
快捷指令为
-executionpolicy bypass -File "F:. Movies\somefilename.ps1"
我绝对是菜鸟,但我环顾四周发现“-depth”对我不起作用,因为 -include 命令和 -exclude 似乎因为递归而不起作用。
如果你能帮我修改代码,让它只深入 1 个文件夹或排除名为“Extras”的文件夹and/or“Featurettes”,那就太棒了!
我真的不在乎代码有多干净,只要它能正常工作,因为它只适合我。
谢谢大家!
干杯
法比安
gci ... | Where {
-not(
$_.FullName.Contains("\Features\") -or
$_.FullName.Contains("\Extras\") -or
$_.FullName.Contains("\Whatever\")
)
} | Get-Random -Count 1 | Invoke-Item
请注意,这会调用 .NET String.Contains()
方法,并且区分大小写,这与 PowerShell 的正常行为相反。
如果您想要不区分大小写的匹配,请使用 -match
+ 正则表达式,或 $_.FullName.ToLower().Contains("lower case string")
.
为了完整起见,上面的“纯本机”PowerShell 变体可能看起来像
gci ... | Where FullName -notmatch "\(Features|Extras|Whatever)\" | Get-Random -Count 1 | Invoke-Item
但是除非您熟悉正则表达式,否则更明确的变体似乎更可取。
所以我在 google 上找到了这个脚本,可以打开并播放我的电影文件夹中的随机电影。 我在主电影文件夹中有脚本,所有电影都在这个文件夹的子文件夹中。在那些特定的电影文件夹中是电影文件,有时还有另一个文件夹,其中包含额外内容和花絮。
我遇到的问题是,脚本打开了我在所述子文件夹中的电影的额外内容和花絮视频文件。
这是我的剧本运行。
$formats = @("*.avi","*.mp4","*.flv","*.mpg","*.wmv","*.mkv","*.mov")
$dir = Split-Path $MyInvocation.MyCommand.Path
gci "$dir\*" -include $formats -recurse | Get-Random -Count 1 | Invoke-Item
快捷指令为
-executionpolicy bypass -File "F:. Movies\somefilename.ps1"
我绝对是菜鸟,但我环顾四周发现“-depth”对我不起作用,因为 -include 命令和 -exclude 似乎因为递归而不起作用。
如果你能帮我修改代码,让它只深入 1 个文件夹或排除名为“Extras”的文件夹and/or“Featurettes”,那就太棒了!
我真的不在乎代码有多干净,只要它能正常工作,因为它只适合我。
谢谢大家!
干杯 法比安
gci ... | Where {
-not(
$_.FullName.Contains("\Features\") -or
$_.FullName.Contains("\Extras\") -or
$_.FullName.Contains("\Whatever\")
)
} | Get-Random -Count 1 | Invoke-Item
请注意,这会调用 .NET String.Contains()
方法,并且区分大小写,这与 PowerShell 的正常行为相反。
如果您想要不区分大小写的匹配,请使用 -match
+ 正则表达式,或 $_.FullName.ToLower().Contains("lower case string")
.
为了完整起见,上面的“纯本机”PowerShell 变体可能看起来像
gci ... | Where FullName -notmatch "\(Features|Extras|Whatever)\" | Get-Random -Count 1 | Invoke-Item
但是除非您熟悉正则表达式,否则更明确的变体似乎更可取。