【发布时间】:2014-07-07 08:09:53
【问题描述】:
我有多个来自 for 循环内的 reg 查询的字符串。 我想验证它们中的每一个是否有特定的词,如果有的话,我会采取行动。 我的代码是这样的:
for /l %%g in (0 1 3) do (
echo HOME%%g
for /f "tokens=1,2,3*" %%h in ('reg query \\%%c\HKLM\SOFTWARE\ORACLE\HOME%%g /v ORACLE_HOME') do (
echo HOME%%g
echo %%j
echo %%j | findstr /I /R /C:"806"
if %ERRORLEVEL% equ 0 (
echo YES
) else (
echo NO
)
echo %%j | findstr /C:".isuites."
if %ERRORLEVEL% equ 0 (
echo YES
) else (
echo NO
)
echo %%j | findstr /I ora90
if errorlevel 0 (
echo YES
) else (
echo NO
)
echo %%j | findstr /I forms10
if errorlevel 0 (
echo YES
) else (
echo NO
)
)
)
问题是它没有验证输出中看到的字符串
HOME0
HOME0
ECHO is off.
YES
YES
YES
YES
HOME0
d:\oracle\806
d:\oracle\806
YES
YES
YES
YES
HOME1
HOME1
ECHO is off.
YES
YES
YES
YES
HOME1
d:\oracle\iSuites
YES
YES
YES
YES
HOME2
HOME2
ECHO is off.
YES
YES
YES
YES
HOME2
d:\oracle\ora90
YES
YES
d:\oracle\ora90
YES
YES
HOME3
HOME3
ECHO is off.
YES
YES
YES
YES
HOME3
D:\oracle\forms10g
YES
YES
YES
D:\oracle\forms10g
YES
【问题讨论】:
-
“ECHO %%J”是 ORACLE_HOME。在这种情况下,它返回 4 个不同的 ORACLE_HOME。
-
这些信息对我们没有帮助,因为我们不知道变量 h、i 和 j是什么> 继续通过
tokens=1,2,3*解析命令reg query的输出。输出中的ECHO is off.表明变量 j 是一个空字符串,因此echo %%j在执行时只是echo,这会导致在控制台窗口中打印回显状态。 -
应该在 req 查询中返回的字符串是: d:\oracle\806 d:\oracle\isuites d:\oracle\ora90 d:\oracle\forms10g 变量 %%G 是返回 HOME0、HOME1、HOME2 和 HOME3 的计数器 所以,你应该有,例如: HOME0 d:\oracle\806 关键是,对于每个 HOME ...0、1、2、3 ...测试 wich home实际上有 ...806、isuites、forms10g 或 ora90 希望对您有所帮助
标签: batch-file for-loop echo findstr