我已经找了很多个星期来解决我的问题,但找不到一个好的方法来解决我可能需要使用的每台机器上的问题。我知道START命令会打开一个新窗口来运行.exe,但我想留在同一个窗口中运行.exe(因为我希望只有当.EXE运行完毕时批处理文件才能继续)我发现在一些计算机上,当I .exe打开一个新窗口时,其他计算机停留在同一窗口中,这让我认为我的代码很好,但在计算机上的某个地方有一个设置是不同的。你能帮忙吗?我有什么选择?我正在运行的.exe是NASTRAN,这是一个在命令窗口中运行的工程求解器。
oiopk7p51#
要等待命令终止,应使用WAIT标志:
WAIT
start /WAIT c:/windows/system32/notepad.exe
您可以使用B标志启动应用程序而不创建新窗口:
B
start /WAIT /B "c:/windows/system32/cmd.exe"
您还应该尝试阅读start命令的帮助文本:
start /?
o75abkj42#
您可以使用cmd /k example.exe
cmd /k example.exe
3bygqnnd3#
你可能有一个不同的变种.exe在一些机器上,这是调用只在那里,并产生一个单独的窗口,原因我不知道。搜索.exe文件在所有的机器上,并比较。此外,张贴您的批处理文件代码,以便我们可以确切地看到您如何启动. exe。
anauzrmj4#
你可以考虑 * 根本不使用start*,直接启动可执行文件即可。
xe55xuns5#
是否尝试在批处理文件中使用call。它在与批处理文件相同的窗口中运行exe。批处理文件中的下一条语句在此exe运行完毕后执行
pxiryf3j6#
为了做到这一点,您必须运行一个可执行文件 * 从它所在的目录 *,还必须 * 避免使用"启动"命令 *。例如:
cd C:\MyDirectory\ MyApplication.exe -Parameter1 -ParameterN
xzv2uavs7#
我只通过权限升级脚本(它将以管理员身份启动您的.bat/.cmd文件)在同一CMD窗口中显示我的可执行文件的输出(上述解决方案对我无效):
.bat
.cmd
if _%1_==_payload_ goto :payload :getadmin echo %~nx0: elevating self set vbs=%temp%\getadmin.vbs echo Set UAC = CreateObject^("Shell.Application"^) >> "%vbs%" echo UAC.ShellExecute "%~s0", "payload %~sdp0 %*", "", "runas", 1 >> "%vbs%" "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" goto :eof :payload <<<start writing your commands from here. E.g.: "C:\my program\launcher.exe" argument1>>> pause
P.S.不要忘记从脚本中删除<<<和>>>。
<<<
>>>
7条答案
按热度按时间oiopk7p51#
要等待命令终止,应使用
WAIT
标志:您可以使用
B
标志启动应用程序而不创建新窗口:您还应该尝试阅读start命令的帮助文本:
o75abkj42#
您可以使用
cmd /k example.exe
3bygqnnd3#
你可能有一个不同的变种.exe在一些机器上,这是调用只在那里,并产生一个单独的窗口,原因我不知道。搜索.exe文件在所有的机器上,并比较。
此外,张贴您的批处理文件代码,以便我们可以确切地看到您如何启动. exe。
anauzrmj4#
你可以考虑 * 根本不使用start*,直接启动可执行文件即可。
xe55xuns5#
是否尝试在批处理文件中使用call。它在与批处理文件相同的窗口中运行exe。批处理文件中的下一条语句在此exe运行完毕后执行
pxiryf3j6#
为了做到这一点,您必须运行一个可执行文件 * 从它所在的目录 *,还必须 * 避免使用"启动"命令 *。
例如:
xzv2uavs7#
我只通过权限升级脚本(它将以管理员身份启动您的
.bat
/.cmd
文件)在同一CMD窗口中显示我的可执行文件的输出(上述解决方案对我无效):P.S.不要忘记从脚本中删除
<<<
和>>>
。