微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Windowsbatch file – batch file在需要一段时间才能完成的命令之后停止执行

以下是文件“vs.bat”的内容

call "C:Program Files (x86)Microsoft Visual Studio 8Common7Toolsvsvars32.bat" call path.bat dea usev bis cd ana call b-env-i.bat

当我执行这个batch file时,在下一步之后停止执行。

dea usev bis

任何人都可以请帮忙指出这里出了什么问题,以及如何让所有的命令执行。 请注意,前面提到的命令(dea usev bis)可以正常工作(在批处理和单独执行时)。 dea是可执行文件名称,“usv bis”是“dea”exe文件的运行时参数。

我正在运行Windows 7。

在shell脚本中parsingwmic的输出

如何使用批处理脚本删除文件名称的前7个字符?

冒号批量variables名称

批量replace文本文件内的文本(Linux / OSX命令行)

如何用批量更改项目中的特定string

澄清:

当我运行的时候,第三次调用“dea usev bis”成功执行后,batch file停止执行。 这是以下两个调用(这是VS.bat的一部分)不会得到执行

cd ana

调用b-env-i.bat

请注意,调用“dea usev bis”需要大约20秒才能执行,无论是单独运行还是作为脚本的一部分运行。

更新:

我试过paxdiablo的build议,结果如下:

[C:dea]for %i in (dea.cmd) do @echo %~$PATH:i ECHO is on. [C:dea]for %i in (dea.bat) do @echo %~$PATH:i ECHO is on. [C:dea]for %i in (dea.exe) do @echo %~$PATH:i C:deabindea.exe [C:dea]where dea.exe C:deabindea.exe C:deabindea.exe.1 C:deabindea.exe.ia64

当我通过以下明确运行它,我仍然遇到同样的问题

c:deabindea.exe usev bis

而且,正如我刚才所说,改变脚本来call dea也不能解决问题。

还有什么我可以尝试吗?

我的CMD批处理脚本不起作用(此时0意外。)

超时或closures时,处理完成

从WMIC获取产品名称作为批量variables

batch file帮助:确定版本以决定操作

在特定驱动器的Windows中的磁盘大小

它看起来像你正试图调用另一批/脚本文件,如果你离开call ,将被简单地链接到而不是调用链接到,在这种情况下,这意味着它不会返回)。 我建议改变这一行:

call dea usev bis

举个例子,考虑脚本go2.cmd :

@echo off echo %1

和go.cmd :

@echo off call go2 1 go2 2 echo 3

执行go只会给你:

1 2

因为go2 2线链,而不是调用脚本。 然而, call go2 1线,工作正常。

而且,即使您有一个dea.exe文件,这并不一定意味着它正在运行。 你的脚本调用dea所以留下了什么实际运行到shell的选择(搜索路径,尝试不同的扩展等等)。

要检查您实际调用的是否是批处理文件,可以执行以下操作。 首先执行以下表示:

echo %PATH% for %i in (dea.cmd) do @echo %~$PATH:i for %i in (dea.bat) do @echo %~$PATH:i for %i in (dea.exe) do @echo %~$PATH:i

(或者我认为你可以使用where dea*如果你运行的是Win 7+,详情请看这里 )。

这会告诉你路径中是否有dea.cmd/bat/exe ,并告诉你路径中的相关目录在哪里 。 如果有脚本版本,则可能存在于exe版本之前的路径中。 你可以简单地检查一下你的%PATH%环境变量来找出哪个目录是第一个

其次,如果您在c:deabin有exe ,请尝试使用以下命令从脚本中明确运行:

c:deabindea.exe usev bis

如果返回好的话,它会增加对使用脚本版本的支持

第三,你可以改变脚本建议(添加call ),看看是否修复它。 如果它正在引用一个脚本,那将会修复它。

如果没有这些工作(这似乎是基于你的回应, dea绝对是一个exe文件的情况下),你需要开始准确地找出发生故障的位置。 这可以通过在每一行之间放置一个echo语句来完成,这样就可以看到是什么导致了这个问题。 换句话说,就像:

echo DEBUG a & time <nul: call "C:Program Files (x86)Microsoft Visual Studio 8Common7Toolsvsvars32.bat" echo DEBUG b & time <nul: call path.bat echo DEBUG c & time <nul: dea usev bis echo DEBUG d & time <nul: cd ana echo DEBUG e & time <nul: call b-env-i.bat echo DEBUG f & time <nul:

这会给你的工作时间,并希望明白什么是行不通的时间。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐