我需要使用非常有用的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,因为上一个命令仍在运行。
除此之外,它还用CMD填充我的电脑。
有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
这有点让人困惑。您希望您的命令并行执行,但是您不希望它们在不同的CMD窗口中执行?你应该尝试添加/ B:
START /B %%a
这将使CMD产生"隐形" - 在背景中的意思。为避免访问冲突错误,您可以通过将重定向附加到每一行来将重定向从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
...
这看起来很相似,但有很大的不同。 START "ping 127.0.0.1" >> result.txt
表示将START ...
的结果写入文本文件,而START "ping 127.0.0.1>>result.txt"
表示将ping命令的结果写入文件。