我假设您知道管道通常用于什么。在您的代码中,管道的两侧都将其标准输出重定向到一个文件。所以管道没有达到它的正常用途。
Windows 实现管道的方式是为管道cmd
的每一侧启动一个新线程。
在您的情况下,这|
是实例化两个命令的并行处理的一种快速而肮脏的方法。
更新
我刚刚意识到管道的两侧都将标准输出重定向到同一个日志文件。这永远不会起作用,因为一次只有一个cmd
进程(或线程)可以打开文件以进行写访问。从命令行肯定对我不起作用。我收到以下错误:The process cannot access the file because it is being used by another process.
唯一不会失败的方法是 iflogfile
设置为nul
.
如果我不得不猜测,我认为最初的开发人员打算&
使用|
. 没有理由将单个 ECHO 语句与另一个批处理脚本并行运行。看起来第一条语句只是一个时间戳。
我认为你的代码应该看起来像
echo %DATE% %TIME% some text ... >> %logfile% & call c:\path\script1.bat >> %logfile%
或者更好
>>%logfile% (
echo %DATE% %TIME% some text ...
call c:\path\script1.bat
)