如何使用批处理文件执行任何 .exe 文件?

4

我知道可以通过以下方式启动exe:

start "" /b filename.exe

但这需要我知道 filename.exe 的名称,那么对于以 .exe 结尾的任何通用文件,我该如何做?我尝试了显而易见的通配符实现:

start "" /b *.exe

然而,Windows 给出了一个错误,表示找不到 "*.exe" 文件。


这将用于什么目的? - Anthony Forloney
在我的脚本的先前部分被提取后,执行一个特定文件夹中的一个exe。(文件夹中始终只有一个exe) - ShizukaSM
5个回答

13

如果您计划在批处理文件中运行,可以按照以下方式执行:

for %%i in (*.exe) do start "" /b "%%i"

如果你想跳过特定的文件以不执行它:

for %%i in (*.exe) do if not "%%~nxi" == "blabla.exe" start "" /b "%%i"

如果需要检查子文件夹,请添加 /r 参数:

for /r %%i in (*.exe) do start "" /b "%%i"

实际上,你的答案是唯一有效的,因为其他答案在带有空格的文件夹(例如“文档和设置”)中收到了错误提示。谢谢!你知道是否有任何方法可以添加一个“except”吗?(类似于 for /r %%i in (*.exe) do start "" /b "%%i" except blabla.exe - ShizukaSM
1
尝试这种方式:for /r %%i in (*.exe) do if not "%%~nxi" == "blabla.exe" start "" /b "%%i" - Guido Preite

4

在命令提示符下,运行以下命令进入包含您想要运行的所有exe文件的文件夹:

for %x in (*.exe) do ( start "" /b  "%x" )

2
希望能对你有所帮助。
for /f "delims=" %%a in ('dir /b /s "*.exe"') do (
    start %%a
)

你应该首先使用dir命令查找所有exe文件,然后执行它。

0
在批处理文件中添加这行代码。
FOR /F "tokens=4" %%G IN ('dir /A-D /-C ^| find ".exe"') DO start "" /b %%G

这个命令会在当前目录下执行所有的 .exe 文件。与以下命令相同:

*.exe

如果批处理支持*,就可以完成这个操作。

如果您想直接从命令行窗口执行它,请执行以下操作:

FOR /F "tokens=4" %G IN ('dir /A-D /-C ^| find ".exe"') DO start "" /b %G

我收到了一个“Windows无法找到'167936'”的错误信息,有什么想法吗? - ShizukaSM
它在某些日期/时间格式上失败,如果文件名带有空格也会失败。 - Endoro

0

不要把空间问题归咎于他们的代码。你应该知道如何使用双引号。

for /f "delims=" %%a in ('dir /b /s *.exe') do (
    start "" "%%a"
)

我并不这样认为。虽然它只有一半的效果,但我还是给了一个+1。我只是选择了最佳答案,不知道你为什么这么愤怒。 - ShizukaSM

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