运行命令,如果失败,则运行另一个,如果成功,则结束

时间:2020-03-10 15:26:17

标签: powershell batch-file cmd batch-processing

我正在尝试找到一种从所有Studio工作站上卸载maya2019的方法。我们提供了3个Maya2019版本,其中包含不同的卸载命令:

"C:\Program Files\Autodesk\Maya2019\Setup\Setup.exe" /P {D4BE10F2-3E2D-4120-863A-765623D53264} /M MAYA /LANG en-us /q

"C:\Program Files\Autodesk\Maya2019\Setup\Setup.exe" /P {77067FD9-800C-48B4-803D-569642ADABC5} /M MAYA /LANG en-us /q

"C:\Program Files\Autodesk\Maya2019\Setup\Setup.exe" /P {1DB1AEB7-EDBD-4BB1-87DB-26C72576DA42} /M MAYA /LANG en-us /q

我需要制作一个运行命令的脚本,如果一个脚本失败,那么它将运行下一个脚本,如果成功,它将退出并结束。

现在我有这个:

if "C:\Program Files\Autodesk\Maya2019\Setup\Setup.exe" /P {D4BE10F2-3E2D-4120-863A-765623D53264} /M MAYA /LANG en-us /q; then
    echo success && exit
else
if "C:\Program Files\Autodesk\Maya2019\Setup\Setup.exe" /P {77067FD9-800C-48B4-803D-569642ADABC5} /M MAYA /LANG en-us /q; then
    echo success && exit
else
if "C:\Program Files\Autodesk\Maya2019\Setup\Setup.exe" /P {77067FD9-800C-48B4-803D-569642ADABC5} /M MAYA /LANG en-us /q; then
    echo success && exit

但是我不确定我是否朝着正确的方向前进?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

Theo在对该问题的评论中建议,更有效的解决方案是根据命令中的GUID在STRATEGY_ID = 513的注册表中查询卸载命令行。

This answer提供了有关如何执行此操作的指针。

如果这不是一种选择,那么这是PowerShell解决方案:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

foreach ($guid in '{D4BE10F2-3E2D-4120-863A-765623D53264}', '{77067FD9-800C-48B4-803D-569642ADABC5}', '{1DB1AEB7-EDBD-4BB1-87DB-26C72576DA42}') { $exe = 'C:\Program Files\Autodesk\Maya2019\Setup\Setup.exe' $ps = Start-Process -PassThru -Wait $exe "/P $guid /M MAYA /LANG en-us /q" if ($ps.ExitCode -eq 0) { "Success"; exit 0 } } Write-Warning "Uninstallation failed." exit $ps.ExitCode 启动安装程序进程,等待其终止,然后返回代表终止进程的System.Diagnostics.Process实例,然后可以检查其退出代码(Start-Process -PassThru -Wait)。退出代码.ExitCode表示成功,其他值失败。