根据批处理脚本中的通配符启动程序

根据批处理脚本中的通配符启动程序

我正在为其他人开发的程序创建安装脚本。他们的安装程序无法覆盖现有版本,因此我需要卸载所有以前的安装。

卸载程序名为 unins$num.exe,其中 $num 是一个数字,似乎在每次安装程序时都会增加(例如 unins000.exe、unins001.exe、unins002.exe)。

我目前正在使用 MS-DOS 批处理脚本,因为我部门的其他人可能会维护它,但如果使用其他语言更容易,我愿意改变。唯一的要求是我不能先安装解释器,因此它必须内置在 Windows 中。

我的目标平台是 Windows XP 和 Windows 7。Windows Vista 支持很好,但不是必需的。

我如何使用通配符来启动程序,这样我就不需要列出 1000 个可能的 exe?

答案1

假设目标文件夹仅包含一个 unins$num.exe 可执行文件,并且批处理脚本与卸载程序位于同一文件夹中:

@echo off
FOR /f "tokens=*" %%G IN ('dir /b unins*.exe') DO %%G

从基本术语上讲,它只是循环输出dir /b unins*.exe并逐一执行每个结果。

如果您希望批处理脚本可以从另一个位置执行(但仍与卸载可执行文件保存在同一文件夹中),那么您可以将 %~dp0(批处理脚本的路径)添加到脚本中:

@echo off
FOR /f "tokens=*" %%G IN ('dir /b %~dp0\unins*.exe') DO %~dp0\%%G

最后,如果您希望批处理脚本与卸载可执行文件放在不同的文件夹中,那么只需将 %~dp0 替换为完整路径,例如,如果卸载程序位于C:\CoolProgram

@echo off
FOR /f "tokens=*" %%G IN ('dir /b C:\CoolProgram\unins*.exe') DO C:\CoolProgram\%%G

相关内容