首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在批处理脚本中"2^>^&1“是什么意思?

在批处理脚本中"2^>^&1“是什么意思?
EN

Stack Overflow用户
提问于 2022-05-18 10:48:08
回答 1查看 68关注 0票数 0

我只是在学习批处理脚本。我正在审查getJavaVersion.bat脚本在GitHub上。我理解了下面代码行中的2^>^&1表达式的用途。但我无法理解这个语法(2^>^&1)是如何使用的。你能帮我做这个吗?

代码语言:javascript
运行
复制
for /f tokens^=2-5^ delims^=.-_^" %%j in ('java -fullversion 2^>^&1') do set "jver=%%j%%k%%l%%m"

下面的命令显示生成的值:

代码语言:javascript
运行
复制
for /f "delims=" %%i in ('java -fullversion') do set output=%%i
echo %output%
:: OUTPUT >> java full version "18.0.1.1+2-6"

for /f tokens^=2-5^ delims^=.-_^" %%j in ('java -fullversion 2^>^&1') do set "jver=%%j%%k%%l%%m"
echo %jver%
:: OUTPUT >> 18011+2
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-18 12:13:10

命令java -fullversion返回)而不是STDOUT流(句柄1)。for /Fin关键字后面的命令一起捕获并解析STDOUT流中的命令输出。要捕获STDERR流,您需要2>&1,这意味着句柄2 (STDERR)被重定向到句柄1指向的位置(STDOUT)。为了确保重定向不应用于for /F命令本身,您需要),以便特殊字符>&在处理整个for /F命令行之前失去它们的特殊意义。要捕获的命令最终以未转义的方式包含重定向表达式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72287776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档