Ope*_*era 3 windows cmd pipe batch-file
对不起,如果这是一个重复的问题:-)
我从批处理脚本中得到了下面的代码行。(脚本.bat)
echo %DATE% %TIME% some text ... >> %logfile% | c:\path\script1.bat >> %logfile%
Run Code Online (Sandbox Code Playgroud)
管道(|)符号在这里的意义是什么?
script.bat 在命令行 (script.bat) 中运行良好,并且它也在运行 script1.bat。
从计划任务运行 script.bat 时,它间歇性地无法运行 script1.bat,以错误级别 1 退出。
任何人都知道这是什么| 在这里做:-)
我假设您知道管道通常用于什么。在您的代码中,管道的两端都将其标准输出重定向到一个文件。所以管道没有达到它的正常目的。
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%
Run Code Online (Sandbox Code Playgroud)
或者更好
>>%logfile% (
echo %DATE% %TIME% some text ...
call c:\path\script1.bat
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4334 次 |
最近记录: |