Batch file 要搜索注册表和编辑的批处理文件问题

Batch file 要搜索注册表和编辑的批处理文件问题,batch-file,scripting,registry,Batch File,Scripting,Registry,我对批处理脚本并不陌生,已经为各种其他事情编写了少量脚本,但这个脚本让我感到困惑 实际上,我从其他地方借鉴了这个想法,因为我还没有深入研究for命令 我试图用这个脚本来搜索HKU根键中的每个子键,寻找一个特定的子键路径。如果该子键路径存在,它将修改该子键路径中的键值。但它似乎一直在毫无差错地失败 这就是我现在拥有的: for /f %%a in ('reg query hku') do call :loop1 %%a goto :end :loop1 for /f %1 in (reg que

我对批处理脚本并不陌生,已经为各种其他事情编写了少量脚本,但这个脚本让我感到困惑

实际上,我从其他地方借鉴了这个想法,因为我还没有深入研究for命令

我试图用这个脚本来搜索HKU根键中的每个子键,寻找一个特定的子键路径。如果该子键路径存在,它将修改该子键路径中的键值。但它似乎一直在毫无差错地失败

这就是我现在拥有的:

for /f %%a in ('reg query hku') do call :loop1 %%a
goto :end

:loop1
for /f %1 in (reg query %1\software\microsoft\dynamics) do call :loop2 %%b
goto :end

:loop2
if Errorlevel 1 goto :error
reg add %1\6.0\configuration /v configurationfile /t reg_sz /d \ /f
goto :end

:error
echo Error has occurrd.
goto :end

:end
Pause
当我运行这个批处理时,我得到以下结果

c:\Users\-username-\Desktop\test>for /F %a in ('reg query hku') do call :loop1 %a

c:\Users\-username-\Desktop\test>call :loop1 HKEY_USERS\.DEFAULT

c:\Users\-username-\Desktop\test>for /f HKEY_USERS\.DEFAULT in (reg query HKEY_USER
S\.DEFAULT\software\microsoft\dynamics) do call :loop2 %b

c:\Users\-username-\Desktop\test>
它好像停止运行了?当我在运行errorlevel后检查它时,它返回“0”,所以我想我至少会看到出现错误消息


我是不是错过了一些我只是在看的小东西

您需要GOTO:eof才能从子例程返回

for /f %%a in ('reg query hku') do call :loop1 "%%a"
pause
goto :eof

:loop1
for /f "%~1" in (reg query "%~1\software\microsoft\dynamics") do call :loop2 "%%b"
goto :eof

:loop2
if Errorlevel 1 echo Error has occurred. & pause & exit /B 1
reg add "%~1\6.0\configuration /v configurationfile" /t reg_sz /d \ /f
goto :eof

首先运行此命令-查看它返回的内容是否对您有帮助:

这可能需要更高版本的Windows-我不确定早期Windows的reg查询选项

@echo off
for /f "delims=" %%a in ('reg query hku /s /f data /k ^| find /i "\software\microsoft\dynamics" ') do echo "%%a"
我发现了错误。有两个地方。戈吉斯伯格,你说得对。我需要EOF在那里。正如foxidrive指出的,“loop1”的第一行有一些语法问题。我把自己弄糊涂了

取代:

for /f %1 in ('reg query %1\software\microsoft\dynamics') do call :loop2 %%b
与:


现在它工作得很好。谢谢你的指点

(reg query“%$1\software\microsoft\dynamics”)do call:loop2“%%b”Right@foxidrive中的/f“%%1”的这一行有严重缺陷。我早该抓到的!
for /f %%b in ('reg query %1\software\microsoft\dynamics') do call :loop2 %%b