2013-05-17 57 views
2

我試圖檢查是否有與批處理文件的計算機上的Java安裝,並在必要時安裝java。但是,管道不起作用,並且我在屏幕上獲得了reg查詢的結果。下面是代碼:註冊查詢後管道不起作用?

@ECHO OFF 
cls 

:checkjava 
reg query "HKLM\Software\JavaSoft\Java Runtime Environment" | find "ERROR" > NUL 
if %errorlevel% == 0 
... 

回答

1

試試這個:

reg query "HKLM\Software\JavaSoft\Java Runtime Environment" >nul 2>&1 && goto:OK || goto:fail 

:OK 
echo reg key found 
pause 
goto:eof 

:fail 
echo ERROR key not found! 
pause 
goto:eof 
+0

我也試過這個,但是有什麼不對,命令外殼在執行這個之後立即關閉。任何想法爲什麼? – feluna

+0

你需要兩個'標籤',我會編輯我的答案... – Endoro

+0

我有標籤 – feluna

1

錯誤消息發送到標準錯誤和標準輸出,因此您需要在運行前將標準錯誤重定向到標準輸出find輸出。

reg query "HKLM\Software\JavaSoft\Java Runtime Environment" 2>&1 | find "ERROR" > nul 

另一件事是,REG查詢本身的成功或失敗則返回0或1

Return Code: (Except for REG COMPARE) 
    0 - Successful 
    1 - Failed 

所以,你可能沒有使用find可言。

reg query "HKLM\Software\JavaSoft\Java Runtime Environment" > nul 2> nul 

if %errorlevel% == 0 goto success 
echo "Not found" 
goto end 
:success 
echo "Found" 
:end 

我只是打印發現/未找到 - 但你可以採取任何你想要的行動。

+0

那麼我如何使用那些0或1?對不起,我真的很新:) – feluna

+0

@feluna - 更新了答案。 – user93353

+0

謝謝,這也適用。 – feluna