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

时间:2019-06-21 03:24:12

标签: powershell batch-file

我有用于的批处理脚本。我想将其转换为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脚本

1 个答案:

答案 0 :(得分:0)

似乎您只是在尝试创建一个名为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"
    }
}