等待卸载程序完成批处理

时间:2015-07-28 18:42:35

标签: batch-file wait uninstall taskmanager

我想使用批处理卸载一些程序,然后等待每个程序完成卸载,然后再执行另一个程序。问题是这些卸载程序中的一些不会调用其他程序而不在任务管理器中,因此START / WAIT将无法正常工作。任何想法都会有所帮助。

3 个答案:

答案 0 :(得分:0)

假设您使用的是Windows并且程序是使用.msi软件包安装的,

在批处理文件中卸载程序就像使用MSIEXEC一样简单。有关使用MSIEXEC的完整文档可以在Microsoft Technet

上找到

要查找要卸载的安装的GUID,只需在命令提示符中使用wmic:

wmic product get > C:\InstalledProgramsList.txt

然后导航到C:\ InstalledProgramsList.txt并使用ctrl + F查找所需的产品和关联的GUID

答案 1 :(得分:0)

确定。我想我明白了。这是我正在使用的代码,我创建了一个等待任务完成的子程序。

:waitforuninstallation
timeout /T 1 /NOBREAK >nul
tasklist /FI "IMAGENAME eq %1" 2>NUL | find /I /N "%1">NUL
if %ERRORLEVEL% EQU 0 goto waitforuninstallation
exit /b

可以使用以下方法调用:

call :waitforuninstallation PROGRAMNAME.exe

PROGRAMNAME是任务管理器中运行的任务。 编辑:使子程序带有参数

答案 2 :(得分:0)

NSIS制作的免费安装程序有一个非常令人讨厌的趋势:Cisco Amp,Folding @ Home,PsychoPy,Anaconda和PyCharm。卸载程序exe退出,然后称为Un_A.exe的东西接管了其余的工作。在这种情况下,您必须等待该过程完成。

powershell while (! (get-process Un_a -ea 0)) { sleep 1 }; 'waiting'; wait-process Un_a

或者如果您想要退出代码un_a:

powershell while (! ($proc = get-process Un_A -ea 0)) { sleep 1 }; $handle = $proc.handle; 'waiting'; wait-process Un_A; exit $proc.exitcode