通过cmd.exe调用的powershell.exe命令中的嵌套cmd.exe命令

时间:2019-07-10 11:07:23

标签: powershell batch-file cmd

是否可以设置如下脚本:

file.exe [CMD(POWERSHELL(CMD))]

这是我到目前为止的代码,(结合我在这里得到的答案)

:RETURN
powershell -command "Start-Process -FilePath '\\my\file\path\myapplication.exe'"
powershell -command "if (gps | ? {$_.mainwindowtitle} | select name, id, mainwindowtitle | where {$_.Name -match 'myapplication'}) { Write-Output 'App verified, running in Taskbar.'} else { Write-Output 'App no running in Taskbar, checking again.' cmd.exe /c 'GOTO RETURN' }"

上述批处理文件已转换为.exe。

我的主要问题是cmd.exe /c 'GOTO RETURN'被读为Write-Output而不是代码。

1 个答案:

答案 0 :(得分:1)

因此,如果我正确解析:

您有一个cmd脚本,您正在调用powershell进行检查,并希望根据此powershell命令的结果执行操作。

如果是这样,则必须将对powershell的调用更改为在 :RETURN #command lines here For /F "Tokens=*" %%A IN (' Powershell -command "if (gps ^| ? {$_.mainwindowtitle} ^| select name, id, mainwindowtitle ^| where {$_.Name -match ^'myapplication^'}^) { ^'App verified, running in Taskbar.^' } else { ^'App no running in Taskbar, checking again.^' }" ') DO ( IF /I "%%A" EQU "App no running in Taskbar, checking again." ( GOTO :RETURN ) ) 循环内完成以捕获其输出。

这是我在手机上进行的未经测试的示例:

{{1}}