Powershell,使用 if else 编写 exe 程序

Powershell,使用 if else 编写 exe 程序

我已经生成了此代码,当文件夹中存在文件扩展名时,运行程序(MetaX)..但是当它找到 x 个文件扩展名时,它会尝试运行该程序 x 次。

$Files3 = "C:\Users\BRACEGIRDLE\Favorites\Desktop\MASTER_FOLDER\3_FINISHED"
$MetaX = "C:\Program Files (x86)\MetaX"
$MetaXTVShows = "C:\Users\BRACEGIRDLE\Favorites\Desktop\MASTER_FOLDER\2_TEMPORARY\TV_SHOWS"
$MetaXExtensions = @(".mp4")

Set-Location $MetaXTVShows
Get-ChildItem | Where-Object {
If ($MetaXExtensions -contains $_.Extension)
{& $MetaX\metax.exe /T /A $MetaXTVShows /AT $Files3 /C}
Else {}
}

我相信这与 if else 函数有关,但我可能错了。我最初尝试了 for each,然后尝试了 where-object。

还有其他解决方法吗?因为由于正在搜索的文件夹中有 5 个扩展名,所以需要运行该程序 5 次,导致该软件无法正常工作?

答案1

该对象返回多个具有该扩展名的文件。然后,每次出现该扩展名时,您都会执行该程序。只需检查扩展名是否存在,即 true 或 false。根据该结果,执行您的程序。

答案2

设法使其部分工作,感谢 Keltan 的建议..

$Files3 = "C:\Users\BRACEGIRDLE\Favorites\Desktop\MASTER_FOLDER\3_FINISHED"
$MetaX = "C:\Program Files (x86)\MetaX"
$MetaXTVShows = "C:\Users\BRACEGIRDLE\Favorites\Desktop\MASTER_FOLDER\2_TEMPORARY\TV_SHOWS"
$MetaXExtensions = @(".mp4")
$ContainsTrue = $MetaXExtensions -contains $_.Extension

Set-Location $MetaXTVShows
If ($ContainsTrue -eq $false)
    {& "C:\Program Files (x86)\MetaX\metax.exe" /T /A $MetaXTVShows /AT $Files3 /C}
Else {"NOTHING"}

在某种程度上运行良好,但它不会查看文件夹中的 *.mp4,如果里面没有任何东西,它仍会运行该程序,有一件事让我感到困惑,那就是 $false 和 $true。我曾想过

If ($ContainsTrue -eq $false)

是真的吗?

答案3

IIUR 您希望运行 metax.exe 一次,前提是路径中至少有一个 .mp4 文件:

$Files3 = "C:\Users\BRACEGIRDLE\Favorites\Desktop\MASTER_FOLDER\3_FINISHED"
$MetaX = "C:\Program Files (x86)\MetaX"
$MetaXTVShows = "C:\Users\BRACEGIRDLE\Favorites\Desktop\MASTER_FOLDER\2_TEMPORARY\TV_SHOWS"
$MetaXExtensions = @("*.mp4")
Set-Location $MetaXTVShows

if ((Get-ChildItem $MetaXExtensions).count -ge 1){
    & $MetaX\metax.exe /T /A $MetaXTVShows /AT $Files3 /C
}

答案4

终于搞明白了……首先求真或假,然后转到 Test-Path 函数,稍微尝试了一下,设法让它在这个实例中工作。我想如果我在搜索更复杂的东西,那么这个就行不通了,我在遇到的另一个问题上发现了这一点(完全不同的问题,我会为此发布另一篇文章)

$MetaX = "C:\Program Files (x86)\MetaX"
$MetaXMovies = "C:\Users\BRACEGIRDLE\Favorites\Desktop\MASTER_FOLDER\2_TEMPORARY\MOVIES"
$MetaXTVShows = "C:\Users\BRACEGIRDLE\Favorites\Desktop\MASTER_FOLDER\2_TEMPORARY\TV_SHOWS"
$MetaXExtensions = "*.mp4"
$Files3 = "C:\Users\BRACEGIRDLE\Favorites\Desktop\MASTER_FOLDER\3_FINISHED"

If (Test-Path $MetaXMovies\$MetaXExtensions)
    {& "C:\Program Files (x86)\MetaX\metax.exe" /V /A $MetaXMovies /AT $Files3 /C | Out-Null}
   Else {}
If (Test-Path $MetaXTVShows\$MetaXExtensions)
    {& "C:\Program Files (x86)\MetaX\metax.exe" /T /A $MetaXTVShows /AT $Files3 /C | Out-Null}
   Else {}

非常感谢你的帮助,我很喜欢学习 powershell

相关内容