我正在尝试将此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
。
答案 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
}