Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理脚本以并行运行文件中的命令_Batch File - Fatal编程技术网

Batch file 批处理脚本以并行运行文件中的命令

Batch file 批处理脚本以并行运行文件中的命令,batch-file,Batch File,我需要使用cmd工具,这是非常不完善的。通常需要花费大量时间才能返回提示,否则它将挂起 我想通过创建一个新的批处理文件来自动化这个过程,该批处理文件接收input.txt文件中的命令,并对该批处理进行并行调用,以避免浪费时间,并将所有内容记录在日志文件中 这就是我所能做到的 @echo off for /f "tokens=*" %%a in (input.txt) do ( START %%a >> result.txt TIMEOUT /T 60 ) PAUSE 但我得

我需要使用cmd工具,这是非常不完善的。通常需要花费大量时间才能返回提示,否则它将挂起

我想通过创建一个新的批处理文件来自动化这个过程,该批处理文件接收input.txt文件中的命令,并对该批处理进行并行调用,以避免浪费时间,并将所有内容记录在日志文件中

这就是我所能做到的

@echo off
for /f "tokens=*" %%a in (input.txt) do (
  START %%a >> result.txt
  TIMEOUT /T 60
)
PAUSE
但我得到了一个错误:

The process cannot access the file because it is being used by another process.
我认为这是指重定向到results.txt,因为前面的命令仍在运行

除此之外,它还用CMDs填充我的电脑


谁能帮我一下吗?

这有点让人困惑。您希望命令并行执行,但不希望在不同的CMD窗口中执行?您应该尝试添加/B:

START /B %%a
这将使CMDs生成不可见-表示在后台。为了避免访问冲突错误,可以将重定向从bat文件移动到txt文件,方法是将重定向附加到每一行。假设您的txt如下所示:

...
ping 127.0.0.1
copy C:\xyz.txt d:\xyz.txt
...
...
ping 127.0.0.1>>result.txt
copy C:\xyz.txt d:\xyz.txt>>result.txt
...
修改后的文件如下所示:

...
ping 127.0.0.1
copy C:\xyz.txt d:\xyz.txt
...
...
ping 127.0.0.1>>result.txt
copy C:\xyz.txt d:\xyz.txt>>result.txt
...

这看起来很相似,但有很大的不同。START ping 127.0.0.1>>result.txt表示写入START的结果。。。在开始ping 127.0.0.1>>result.txt时,将ping命令的结果写入文本文件。

将结果存储到不同的文件中,例如result-%%~na.txt,然后将它们连接起来。能否给出input.txt内容的示例?问题是我将打开~1000 cmd。有没有办法在之后关闭cmd?您可以尝试出现并退出到每一行。这将在执行后关闭CMD。如果您只希望在命令执行时无错误地将其关闭,请使用&&EXIT。EXIT听起来很完美。我试试看