for循环获取专有名称不返回任何内容

时间:2013-09-04 20:52:01

标签: windows command-line batch-file

以下获取专有名称的代码适用于我的所有计算机,但有一些。

FOR /F "skip=2 tokens=3*" %%I in ('reg query "hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine" /v Distinguished-Name') DO @ECHO "%%I %%J"

我正在研究一台展示这种情况的XP机器,并尝试了下面的替代品,但无济于事:

FOR /F "tokens=3*" %%I in ('reg query "hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine" /v Distinguished-Name |findstr "CN="') DO ECHO "%%I %%J"

有趣的是,如果我不像这样包含/ f,我会得到很好的结果:

reg query "hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine" /v Distinguished-Name |findstr "CN="
    Distinguished-Name  REG_SZ  CN=xyz123,OU=Test-5,DC=test,DC=com

reg query "hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine" /v Distinguished-Name

! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine
        Distinguished-Name  REG_SZ  CN=xyz123,OU=Test-5,DC=test,DC=com

这里可能有什么想法?

2 个答案:

答案 0 :(得分:1)

FOR /F "tokens=2*" %%I in ('reg query "hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine" /v Distinguished-Name^|find "REG_SZ"') DO ECHO "%%J"

适用于所有Windows版本。

答案 1 :(得分:0)

咄!我从剧本中删除了那部分而忘记删除'%'以便它应该是%I而不是%% I,这就是为什么没有返回。