为什么我的批处理文件在等待超时命令之前继续运行?

问题描述:

cd "..\..\..\Sound" 
start "" "mt32.exe" 
timeout /T 5 /nobreak > NUL 
cd ".\" 
SCIV.exe 

如果您完全熟悉DOSBox,我正在使用DOSBox前端(D-Fend Reloaded)来启动包含此代码的.bat文件。什么是应该发生的是这样的:为什么我的批处理文件在等待超时命令之前继续运行?

  1. 批处理文件更改目录,并启动mt32.exe(这是打开了一个MT-32合成的AutoHotkey的脚本)
  2. 批处理文件等待5秒钟
  3. 然后
  4. 批处理文件转换至其自己的目录,并启动SCIV.exe(这是游戏的exe空间搜寻III

什么实际上情况是,开始mt32.exe之后,右吹过去超时命令和s挞游戏。我想知道D-Fend Reloaded(前端)是否预加载批处理文件并按照自己的条件执行它?

无论如何,我想知道是否有任何方法可以实际执行超时并确保它在游戏启动之前发生;这相当关键。关键是确保mt32合成器有足够的时间在游戏开始之前完全初始化。

+0

我不是在批处理文件的那么好,但(1)你并不需要更改目录之前的应用程序名称添加它:'” .. \。 。\ .. \ Sound \ mt32.exe“'(2)最好在后台启动'mt32.exe':'start/d' - HTH;)。 –

+1

尝试'超时/ T 5/nobreak 0 >> CONIN $> NUL'。如果DOSBox不使用普通控制台,则timeout.exe失败并立即返回。如果有一个隐藏的控制台,则后者命令会尝试将stdin重定向回到其输入缓冲区CONIN $。它需要读写访问权限,所以它使用append模式(即'>>')。 – eryksun

+1

如果@eryksun解决方案无法正常工作,请尝试明确指定“timeout”可执行文件的路径(通常为c:\ windows \ system32 \ timeout.exe),以防发生路径异常。 – Magoo

这可能工作:

ping 127.0.0.1 -n 6 >nul 
+0

@Mofi,Windows 7+不再依赖hosts文件来定义localhost。默认主机文件只包含注释。 localhost是通过DNS解析查找的,如果它没有在hosts文件中定义,那么我认为它会对该值进行硬编码。当然,它仍然可以配置错误。 – eryksun

+0

Thx Mofi,现在修复。 – Kriss7475