我只是在學習批處理腳本。我正在查看 GitHub 上的getJavaVersion.bat腳本。我理解了2^>^&1以下代碼行中的運算式的用途。但我不明白這個語法 ( 2^>^&1) 是如何使用的。你能幫我解決這個問題嗎?
for /f tokens^=2-5^ delims^=.-_^" %%j in ('java -fullversion 2^>^&1') do set "jver=%%j%%k%%l%%m"
下面的命令顯示了生成的值:
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
uj5u.com熱心網友回復:
該命令java -version或java -fullversion回傳STDERR流(句柄)而不是STDOUT流(句柄)的輸出2。與關鍵字后面的命令一起,捕獲并決議STDOUT流中的命令輸出。要捕獲STDERR流,您需要將其重定向到,這意味著句柄(STDERR)被重定向到句柄指向(STDOUT)的位置。為確保重定向不會應用到命令本身,您需要正確地對其進行轉義 ( )1for /Fin2>&121for /F^為了特殊字符>并&失去它們的特殊含義,直到整個for /F命令列被處理。要捕獲的命令最終以非轉義方式包含重定向運算式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/477617.html
