运行命令如果失败则运行另一个如果成功则结束
Run command If fails then run the other one if success then end
我正在尝试找到一种从所有工作室工作站卸载 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
但我不确定我的方向是否正确?
感谢您的帮助
正如 Theo 在对该问题的评论中所建议的,更有效的解决方案是在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
处查询注册表以根据命令中的 GUID 查找卸载命令行。
提供了有关如何执行此操作的指示。
如果这不是一个选项,这里有一个 PowerShell 解决方案:
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
Start-Process -PassThru -Wait
启动安装程序进程,等待其终止,然后 returns 一个代表已终止进程的 System.Diagnostics.Process
实例,其退出代码 (.ExitCode
) 可以然后接受检查。退出代码 0
表示成功,任何其他值表示失败。
我正在尝试找到一种从所有工作室工作站卸载 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
但我不确定我的方向是否正确?
感谢您的帮助
正如 Theo 在对该问题的评论中所建议的,更有效的解决方案是在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
处查询注册表以根据命令中的 GUID 查找卸载命令行。
如果这不是一个选项,这里有一个 PowerShell 解决方案:
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
Start-Process -PassThru -Wait
启动安装程序进程,等待其终止,然后 returns 一个代表已终止进程的 System.Diagnostics.Process
实例,其退出代码 (.ExitCode
) 可以然后接受检查。退出代码 0
表示成功,任何其他值表示失败。