管道批处理命令处理

时间:2016-01-04 09:10:35

标签: string windows shell batch-file command

我想知道下线的输出是什么。请解释我的每个符号。从批处理文件中提取行。

'java -version 2^>^&1 ^| findstr /i "version"'

1 个答案:

答案 0 :(得分:2)

首先看看微软关于Using command redirection operators的文章。

2>&1将写入错误输出流 STDERR 的错误消息重定向到标准输出流 STDOUT 。这导致获取标准消息以及写入相同数据流的错误消息。

使用java.exe获取在打印版本上写入 STDOUT 的{strong> STDOUT 的标准和错误消息作为命令 findstr 的输入输出包含版本信息的行,并忽略|输出的所有其他行。

此命令显然嵌入在 FOR 循环中。因此,有必要使用java.exe转义>&以及|,以便将所有重定向运算符应用于执行^而不是命令 FOR 本身会导致语法错误。

打开命令提示符窗口并在那里运行java.exe以查看 Java 输出的版本信息,如果命令处理器可以找到文件扩展名为java -version的文件当前目录中的环境变量 PATHEXT 或环境变量 PATH 中列出的目录。

接下来在命令提示符窗口java.*中运行,以查看对于包含字符串java -version | findstr /i "version"的行不区分大小写的搜索 findstr 输出。

version分别2>&1在我看来是不必要的。