仅在程序启动后继续批处理脚本

时间:2014-05-30 01:14:30

标签: windows batch-file timeout

我有一个批处理脚本(是的,我知道批次很糟糕,我不在乎),它会检查本地计算机上的VM与存储在USB上的VM,如果它们是'重新过时,它会更新它们,然后启动它们。我在uni使用多台机器,这样可以更容易地确保我工作的VM始终是最新的。

当我这样打开它们时;
PATH "%PROGRAMFILES%\VMware\VMware Workstation\"
START vmware.exe -x "%USERPROFILE%\Desktop\VMs\VM1\VM1.vmx"
START vmware.exe -x "%USERPROFILE%\Desktop\VMs\VM2\VM2.vmx"
START vmware.exe -x "%USERPROFILE%\Desktop\VMs\VM3\VM3.vmx"
它使VM在单独的窗口中打开,而不是在同一窗口的选项卡中打开以便于切换。

我想到的解决方法是首先启动VMware程序,然后当我打开.VMX时,它们都在同一个窗口中作为选项卡打开。
问题是VMware程序有时需要很长时间才能打开。类似于Photoshop的加载启动画面,但没有可视指示符,VMware在单击图标后最多打开20秒,或者已经用脚本召唤它。

最后,这是我的问题。
有没有办法在继续之前制作等待程序打开的批处理?我知道省略START我可以停止批处理直到程序关闭,但显然这对我的目的没用。

如果所有其他方法都失败了,我可能只需要包含30秒timeout,并希望它足够。

1 个答案:

答案 0 :(得分:0)

我认为没有任何可靠的方法可以做到这一点。

如果你有一个程序需要打开,然后在执行其他操作之前等待某个状态更改程序,那么该状态可以通过在应用程序生成的任何线程上运行的任意操作来设置。除非您能够以某种方式与程序通信以查询或通知其状态,否则将无法知道应用程序何时设置该状态。

理论上如果你对内部程序在内部的工作有足够的了解,你可以监视线程数或文件系统访问,或者大致确定它何时更改为所需状态,但只使用定时器会简单得多。