批处理文件执行文件夹中所有 .exe 文件

5

我需要创建一个批处理脚本,以运行文件夹中的所有.exe文件,这必须包括子文件夹。

我正在运行Windows 7,并且批处理文件存储在根文件夹中。

我尝试了几种不同的变体,但都没有成功。主要的两种变体如下:

REM dir *.exe /S /B > tmpFile
REM set /p listVar= < tmpFile
REM del tmpFile

FOR %%F IN (%listVar%) DO %%F

=======================================

FOR /F "usebackq" %%F IN ('dir *.exe /S /B') DO %%F

我已经查看了几种上述方法的变化,但都没有起作用。顶部版本(我想避免)只从文件中读取一行。底部版本在提示窗口中输出未修改的“dir”命令。

最终,我希望能够得到帮助,找出如何解决此问题,而不需要临时文件。

3个回答

8
for /r "." %%a in (*.exe) do start "" "%%~fa"

这将启动当前文件夹及其子文件夹下的所有可执行文件。将对当前文件夹的引用(".")更改为您的需要。

搞定了,谢谢。我已将其修改为for /r "." %%a in (*.exe) do %%~fa因为我希望它能够串行运行(29GB的安装程序分布在19个安装程序中)。 - Luke Turner

0
for %1 in (%USERPROFILE%\*.exe) do "%1"

这将启动您用户文件夹中的所有可执行文件。当然,这包括安装程序和类似的东西,您可能不想重新安装所有应用程序,因此请将%USERPROFILE%替换为您想要的目录。


0
MC NDs解决方案有一个重要的注意事项。首先,如果您以管理员身份运行该脚本,即使脚本位于其他位置,主目录也会默认为C:\ Windows \ System32。试图从该位置运行每个脚本将对您的系统产生不利影响,并有可能导致您需要重新安装Windows(问我是怎么知道的...感谢测试虚拟机和检查点)。您应该在该代码前加上前缀。
cd /D "%~dp0"

这将更改工作目录为文件所在的位置。
所以脚本应该是:
cd /D "%~dp0"
for /r "." %%a in (*.exe) do start "" "%%~fa"

我甚至会建议将目录作为参数传入。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接