Windows 从批处理文件启动的程序在后台启动

Windows 从批处理文件启动的程序在后台启动,windows,batch-file,Windows,Batch File,我有一个从闪存驱动器运行的批处理文件。此文件试图 1. Close 2 programs 2. Update data on the computer based on the data on the flash drive 3. Restart the programs 此批次中的代码为: taskkill /IM "MyProgram".exe taskkill /f /fi "imagename eq MyProgram.exe" copy e:\File1.xml C:\Folder

我有一个从闪存驱动器运行的批处理文件。此文件试图

1. Close 2 programs
2. Update data on the computer based on the data on the flash drive
3. Restart the programs
此批次中的代码为:

taskkill /IM "MyProgram".exe
taskkill /f /fi "imagename eq MyProgram.exe"

copy e:\File1.xml C:\Folder\SubFolder1\Themes\Data\File1.xml /Y
copy e:\File2.xml C:\Folder\SubFolder1\Themes\Data\File2.xml /Y
copy e:\File3.xml C:\Folder\SubFolder2\Themes\Data\File3.xml /Y
copy e:\File4.xml C:\Folder\SubFolder2\Themes\Data\File4.xml /Y

start /MAX "" "C:\Folder\SubFolder2\MyProgram.exe"
start /MAX "" "C:\Folder\SubFolder1\MyProgram.exe"
使用第1-6行上的命令,前两个步骤工作正常。我的问题从第3步和第7行和第8行的命令开始

批处理命令是否有问题


编辑:在进一步挖掘之后,我发现这些程序似乎是在后台启动的。当查看task manager时,程序显示在“后台进程”部分,而不是如预期的那样显示在前台。

我认为您的程序不知道配置文件的位置,因为工作目录是批处理文件本身启动的地方。因此,您的程序正在usb驱动器上查找其文件。通过在START命令中使用/D选项,它将把工作目录切换到您设置的任何路径

start "" /MAX /D "C:\Folder\SubFolder2\" MyProgram.exe

根据当前的计算机驱动器,字母
e:
可能是错误的。仅使用
`或使用
%~d0`@LotPings从正在运行的批处理中获取驱动器-前两个步骤工作正常。进程中使用的计算机之间的e:驱动器保持不变。无法保证始终获得相同的驱动器号。前两个命令不使用任何驱动器号。在(1,1,4)中对/l%%x进行
测试时,请复制“%~d0\file%%x.xml”C:\Folder\SubFolder2\Themes\Data\file%%x.xml”/Y
而不是重复不会有什么坏处。我会尝试像这样启动程序:
启动”“/MAX/D”C:\Folder\SubFolder2\“MyProgram.exe
。我怀疑这会有什么不同。@rdbradshaw,我认为这是根据你的问题标题而定的。