Batch file Reg查询批处理文件

Batch file Reg查询批处理文件,batch-file,scripting,Batch File,Scripting,为了总结我想要实现的目标,我想查询2个键,如果它们存在,转到批处理文件的末尾,如果不安装Java 批处理文件正在安装Java,但在测试是否删除.txt文件时: IF exist %windir%\gpologs\jre_1.7.21.x86.txt goto eof ELSE goto Q1 即使其中一个注册表项存在,安装程序仍试图在顶部安装 以下是完整的批处理文件: IF exist %windir%\grouppolicylogs\jre_1.7.21.x86.txt goto eof E

为了总结我想要实现的目标,我想查询2个键,如果它们存在,转到批处理文件的末尾,如果不安装Java

批处理文件正在安装Java,但在测试是否删除.txt文件时:

IF exist %windir%\gpologs\jre_1.7.21.x86.txt goto eof ELSE goto Q1
即使其中一个注册表项存在,安装程序仍试图在顶部安装

以下是完整的批处理文件:

IF exist %windir%\grouppolicylogs\jre_1.7.21.x86.txt goto eof ELSE goto Q1

:Q1 
Reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{26A24AE4-039D-4CA4-87B4-2F86417025FF}" 
if %ErrorLevel% EQU == 0 goto End ELSE goto Q2

:Q2 
Reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{26A24AE4-039D-4CA4-87B4-2F83217021FF}" 
if %ErrorLevel% EQU == 0 goto End ELSE goto Install 

:Install 
msiexec /i "\\servername\SoftwareRep\Java\Java 1.7.0_21 x86\jre1.7.0_21.msi" /qn
if %ErrorLevel% EQU 0 (
  >>"\\servername\gpolog\jre_1.7.21.x86.csv" echo "%computername%","%date%","%Time%","%ErrorLevel%","Java Runtime 1.7.0_21x86 Installed"
  >>"%windir%\GpoLogs\jre_1.7.21.x86.txt" echo "Java Runtime 1.7.0_21x86 Installed"
) else (
  >>"\\servername\gpolog\JavaInstallErrors.csv" echo "%computername%","%date%","%Time%","%ErrorLevel%","Error trying to install Java 1.7_21x86"
)

:END 
哪里出错了?

只使用一个equals运算符。不是所有的
eq
=
定义if语句命令的范围 除非您有eof标签,
eof
需要冒号。


看到了吗

你在哪个Windows版本上运行这个吗?这也是我首先想到的,但是快速测试表明解释器删除了
==
(该行的输出是
,如果0 eq 0 goto End,否则goto Q2
),并且
goto
指令工作正常。非常感谢大家,脚本现在运行良好。我也有错误的注册表字符串,这没有帮助,因为它正在寻找一些不存在的东西在第一个地方!
if "%ErrorLevel%"=="0" goto End ELSE goto Q2

if "%ErrorLevel%"=="0" goto End ELSE goto Install
if "%ErrorLevel%"=="0" ( goto End ) ELSE ( goto Q2 )

if "%ErrorLevel%"=="0" ( goto End ) ELSE ( goto Install )
goto :eof