gpt4 book ai didi

windows - 批处理脚本中的管道运算符

转载 作者:可可西里 更新时间:2023-11-01 09:59:44 26 4
gpt4 key购买 nike

抱歉,如果这是一个重复的问题:-)

我从批处理脚本中获得了以下代码行。 (脚本.bat)

echo %DATE% %TIME% some text ... >> %logfile% | c:\path\script1.bat >> %logfile%

这里的竖线符号(|)有什么意义?

script.bat 在命令行 (script.bat) 中运行良好,它也在运行 script1.bat。

从计划任务运行 script.bat 时,它间歇性地无法运行 script1.bat,并以错误级别 1 退出。

任何人都知道这 | 在这里做什么:-)

最佳答案

我假设您知道管道通常用于什么。在您的代码中,管道的两边都将其标准输出重定向到一个文件。所以管道没有达到其正常目的。

Windows 实现管道的方式是为管道的每一侧启动一个新的 cmd 线程。

在您的情况下,| 是实例化两个命令的并行处理的快速而肮脏的方式。

更新

我刚刚意识到管道的两端都将 stdout 重定向到同一个日志文件。这应该永远行不通,因为一次只有一个 cmd 进程(或线程)可以打开文件进行写访问。从命令行肯定对我不起作用。我收到以下错误:进程无法访问该文件,因为它正被另一个进程使用。 唯一不会失败的方法是将 logfile 设置为

如果非要我猜的话,我认为最初的开发者打算使用 & 而不是 |。没有理由与另一个批处理脚本并行运行单个 ECHO 语句。看起来第一条语句只是一个时间戳。

我认为你的代码应该是这样的

echo %DATE% %TIME% some text ... >> %logfile% & call c:\path\script1.bat >> %logfile%

或者更好

>>%logfile% (
echo %DATE% %TIME% some text ...
call c:\path\script1.bat
)

关于windows - 批处理脚本中的管道运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18516107/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com