如何在Windows批处理脚本中加载多个程序?

如何在Windows批处理脚本中加载多个程序?,windows,batch-file,Windows,Batch File,我试图创建一个批处理文件来加载多个窗口程序,更具体地说,是控制外围飞行硬件的应用程序 我似乎不知道如何连续打开所有应用程序。我尝试了很多方法,包括运行可执行应用程序: @echo off cd "D:\Controls\" & start "D:\HW_Controls\Control1.exe" & cd "D:\Controls\" & start "D:\HW_Controls\Control2.exe" & cd "D:\Controls\" &

我试图创建一个批处理文件来加载多个窗口程序,更具体地说,是控制外围飞行硬件的应用程序

我似乎不知道如何连续打开所有应用程序。我尝试了很多方法,包括运行可执行应用程序:

@echo off
cd "D:\Controls\" & start "D:\HW_Controls\Control1.exe" &
cd "D:\Controls\" & start "D:\HW_Controls\Control2.exe" &
cd "D:\Controls\" & start "D:\HW_Controls\Control3.exe"
这将一次只运行一个应用程序,直到我退出那个应用程序,这是我不想要的。我希望它们连续打开。因此,我在StackOverflow的某个地方读到一篇旧文章,尝试将每个应用程序作为自己的批处理文件运行,如下所示:

@echo off
start "D:\Controls1.bat" &
start "D:\Controls2.bat" &
start "D:\Controls3.bat"
其中的每个批处理文件看起来类似于:

cd "D:\Controls\" & start "D:\HW_Controls\Control{1..3}.exe"
我也尝试过使用chdir:

chdir "D:\Controls\" & start "D:\HW_Controls\Control{1..3}.exe"
当我尝试在中加载批处理文件时,它似乎不会更改目录,并且只会在初始批处理文件所在的位置(在本例中为桌面目录)打开一个命令提示符

我知道在Windows启动时可以选择打开它们,但这不是我想要的。我想在需要使用应用程序时加载它们


奖励点:如果有人能告诉我在我完成批处理脚本时如何退出所有应用程序。

这里有一种方法可以一次启动多个程序:

@For %%A in ("notepad.exe" "chrome.exe" "calc.exe") do start "" %%~A

以下是一种同时启动多个程序的方法:

@For %%A in ("notepad.exe" "chrome.exe" "calc.exe") do start "" %%~A

批处理解析器逐行工作<代码>&用于在一行中写入两个命令。因此,用
&
结束一行是没有意义的

为了便于阅读,应限制
的使用

cd
应与
/d
开关一起使用,以便能够切换到另一个驱动器

start
将引用的第一个参数作为窗口标题,因此为其指定一个伪标题

start
有一个
/d
参数来设置工作文件夹,因此您根本不需要
cd

因此,批处理文件简化为:

@echo off
start "" /d "D:\Controls\" "D:\HW_Controls\Control1.exe"
start "" /d "D:\Controls\" "D:\HW_Controls\Control2.exe"
start "" /d "D:\Controls\" "D:\HW_Controls\Control3.exe"
echo press any key to kill the program.
pause >nul
taskkill /im "Control1.exe"
taskkill /im "Control2.exe"
taskkill /im "Control3.exe"

注意:
taskkill
向应用程序发送终止信号。如果它不能通过关闭自身正确响应,您可以使用
/f
开关强制关闭它。

批处理解析器逐行工作<代码>&
用于在一行中写入两个命令。因此,用
&
结束一行是没有意义的

为了便于阅读,应限制
的使用

cd
应与
/d
开关一起使用,以便能够切换到另一个驱动器

start
将引用的第一个参数作为窗口标题,因此为其指定一个伪标题

start
有一个
/d
参数来设置工作文件夹,因此您根本不需要
cd

因此,批处理文件简化为:

@echo off
start "" /d "D:\Controls\" "D:\HW_Controls\Control1.exe"
start "" /d "D:\Controls\" "D:\HW_Controls\Control2.exe"
start "" /d "D:\Controls\" "D:\HW_Controls\Control3.exe"
echo press any key to kill the program.
pause >nul
taskkill /im "Control1.exe"
taskkill /im "Control2.exe"
taskkill /im "Control3.exe"

注意:
taskkill
向应用程序发送终止信号。如果它没有通过关闭自身来正确响应,您可以使用
/f
开关强制关闭它。

我不确定这是否相关,但我尝试在命令提示符下运行它,而不是在Windows图标中运行,运行批处理文件时,它会显示“当前目录无效”。但是我可以
cd
进入应用程序可执行字符串中列出的应用程序目录。请重新读取。这是
开始“title”/d=“
”。您只
启动了“title”/d”“
,然后得到了“当前目录(
d:\…\…..EXE
)无效-因为它不是目录。当然..很抱歉,不敢相信我错过了。谢谢。我不确定这是否相关,但我尝试在命令提示符下运行它,而不是在Windows图标中运行,运行批处理文件时,它会显示“当前目录无效”。“。但是我可以
cd
进入应用程序可执行字符串中列出的应用程序目录。请重新读取。这是
开始“title”/d=“
”。您只执行了
启动“title”/d”“
,因此得到了“当前目录(
d:\…\…..EXE
)无效-因为它不是目录。当然..抱歉,不敢相信我错过了。谢谢。