批处理正在打印消息,即使 echo 已关闭

Batch is printing messages, even though echo is off

我有一个简单的代码可以打印出特定键中的注册表值。 问题是,我在下面的循环的每次迭代中打印出活动目录。

郑重声明,我使用了一个只有 2 个 DWORD 值的不同密钥: 姓名和测试

@Echo Off
set SpecialUserRegDir=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
REG QUERY "%SpecialUserRegDir%" /s | for /F %%f in ('findstr "REG_DWORD"') do ( 
   @echo %%f
   [increment will be here]
)

输出

C:\User\[username]\Desktop\RegTest>()
NAME

C:\User\[username]\Desktop\RegTest>()
Test

我知道如果我把do块换成一个signle命令这个问题就会消失,但是do块中会有其他代码,所以我不能用单数命令替换它。

考虑到这一点,有没有办法在不打印出 C:\User\[username]\Desktop\RegTest>() 的情况下编写 REG QUERY 命令(以及之后的组合)?

试试 :

@Echo Off
set SpecialUserRegDir=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
REG QUERY "%SpecialUserRegDir%" /s | for /F %%f in ('findstr "REG_DWORD"') do @( 
   echo %%f
   [increment will be here]
)

管道和 for 打开回显,因此您也需要回显括号。