如何将此Windows批处理文件转换为等效的Powershell脚本?

时间:2016-02-22 05:18:51

标签: powershell batch-file

我正在尝试将此Windows .BAT文件(运行客户端和服务器网络代码应用程序)转换为Powershell:

这是我的bat文件:

@echo off
setlocal


start cmd

start java FixedMessageSequenceServer

ping 192.0.2.2 -n 1 -w 5000 > null

start /wait java FixedMessageSequenceClient

if errorlevel 1 goto retry

echo Finished successfully
exit

:retry
echo retrying...
start /wait java BatchWakeMeUpSomehow

这是我的Powershell文件:

Start-Job -ScriptBlock {
  & java FixedMessageSequenceServer 
  Start-Sleep -s 1
  & java FixedMessageSequenceClient
}




Start-Sleep -s 1

但是当我尝试运行时,它无法正确输出或执行任何操作。 我也不确定如何转换start /wait

1 个答案:

答案 0 :(得分:2)

cmd中的start外部调用运算符大致相当于PowerShell中的Start-Process(别名start) - 它甚至还有一个-Wait参数。

另一方面,

Start-Job在后​​台进程中启动您的scriptjob。

Start-Process java FixedMessageSequenceServer
Start-Sleep -Seconds 1
$JavaClient = Start-Process java FixedMessageSequenceClient -Wait -PassThru

if($JavaClient.ExitCode)
{
    # exit code is non-zero, better retry
    Start-Process java BatchWakeMeUpSomehow -Wait
}