繁体   English   中英

如何将批处理脚本中的条件转换为 PowerShell?

[英]How do I convert condition in batch script to PowerShell?

我有使用 for 的批处理脚本。 我想将其转换为 PowerShell 脚本,任何人都可以提供帮助吗?

这是批处理脚本

for %%i in (c d e f g h) do (
    dir %%i: > nul 2>&1
    if not errorlevel 1 (
        if exist %%i:\System.sav\CTO.txt (
        set WinDrive=%%i:
        )
    )
)

我的期望,我可以将其转换为 PowerShell 脚本

看起来您只是想创建一个名为 WinDrive 的变量。 在 Powershell 中,由于变量以 $ 开头,因此最接近的转换是将 $WinDrive 设置为驱动器号(如果在其上找到该文件)。 通过做

foreach($DriveLetter in @('c','d','e','f','g','h'))
{
    if(Test-Path "$DriveLetter`:\System.sav\CTO.txt")
    {
        $WinDrive = "$DriveLetter`:"
    }
}

如果您希望它更加动态,您可以检测系统上所有可用的驱动器号。

foreach($DriveLetter in $(Get-PSDrive -PSProvider FileSystem | Select-Object -ExpandProperty Root))
{
    if(Test-Path "$DriveLetter`System.sav\CTO.txt")
    {
        $WinDrive = "$DriveLetter"
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM