【发布时间】:2014-02-04 20:42:31
【问题描述】:
所以我想要完成的是:
1) 从计算机列表中读取
2) 确定它是 Windows 的哪一部分(参见下面的 reg 键)
3) 转到相应的if 语句并删除键(如果存在)。
它在 64 位系统上运行得非常好,但由于某种原因,当它遇到 32 位系统(没有 \Wow6432Node\ 的系统)时,它会循环两次并称之为 64 位系统。我很困惑为什么它会这样做。
这是我正在使用的最新代码,旧版本有set regkey1_32=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\00002109A10000000000000000F01FEC\InstallProperties
和
:32_1
echo %1 is 32bit >> "C:\Outlook\RegeditList.txt"
REG QUERY \\%1\%regkey1_32% > nul
所以我可能需要一些新的眼光来看看我不知道的东西。
OVLK.txt 包含计算机名称,因此无论您在其中放入什么 (MJGXGTH(x64)\34ZXYC1(x86)) 都无关紧要。日志文件输出在底部。
@echo off
for /F "tokens=1 delims=" %%i in (C:\Outlook\OVLK.txt) do call :proccheck %%i
goto EOF
:proccheck
REG QUERY \\%1\%proctype% 2>nul >nul
if %errorlevel% == 0 (
goto :64_1
) else (
goto :32_1 )
:32_1
echo %1 is 32bit >> "C:\Outlook\RegeditList.txt"
REG QUERY \\%1\%regkey1_64% > nul
if %errorlevel%== 0 (
echo %regkey1_64% Found! >> "C:\Outlook\RegeditList.txt"
REG DELETE \\%1\%regkey1_64% /f >> "C:\Outlook\RegeditList.txt"
goto :32_2
) else (
echo %regkey1_64% not found on: %1 - Check >> "C:\Outlook\KeysNotFoundlist.txt"
goto :32_2 )
:32_2
REG QUERY \\%1\%regkey2_32% > nul
if %errorlevel%== 0 (
echo %regkey2_32% Found! >> "C:\Outlook\RegeditList.txt"
REG DELETE \\%1\%regkey2_32% /f >> "C:\Outlook\RegeditList.txt"
goto :32_3
) else (
echo %regkey2_32% not found on: %1 - Check >> "C:\Outlook\KeysNotFoundlist.txt"
goto :32_3 )
:32_3
REG QUERY \\%1\%regkey3_32% > nul
if %errorlevel%== 0 (
echo %regkey3_32% Found! >> "C:\Outlook\RegeditList.txt"
REG DELETE \\%1\%regkey3_32% /f >> "C:\Outlook\RegeditList.txt"
echo. >> "C:\Outlook\RegeditList.txt"
) else (
echo %regkey3_32% not found on: %1 - Check >> "C:\Outlook\KeysNotFoundlist.txt"
echo. >> "C:\Outlook\KeysNotFoundlist.txt"
echo. >> "C:\Outlook\RegeditList.txt" )
echo Checked %1 now going to loop! >> "C:\Outlook\RunLog.log"
echo. >> "C:\Outlook\RunLog.log"
:64_1
echo %1 is 64bit >> "C:\Outlook\RegeditList.txt"
REG QUERY \\%1\%regkey1_64% > nul
if %errorlevel%== 0 (
echo %regkey1_64% Found! >> "C:\Outlook\RegeditList.txt"
REG DELETE \\%1\%regkey1_64% /f >> "C:\Outlook\RegeditList.txt"
goto :64_2
) else (
echo %regkey1_64% not found on: %1 - Check >> "C:\Outlook\KeysNotFoundlist.txt"
goto :64_2 )
:64_2
REG QUERY \\%1\%regkey2_64% > nul
if %errorlevel%== 0 (
echo %regkey2_64% Found! >> "C:\Outlook\RegeditList.txt"
REG DELETE \\%1\%regkey2_64% /f >> "C:\Outlook\RegeditList.txt"
goto :64_3
) else (
echo %regkey2_64% not found on: %1 - Check >> "C:\Outlook\KeysNotFoundlist.txt"
goto :64_3 )
:64_3
REG QUERY \\%1\%regkey3_64% > nul
if %errorlevel%== 0 (
echo %regkey3_64% Found! >> "C:\Outlook\RegeditList.txt"
REG DELETE \\%1\%regkey3_64% /f >> "C:\Outlook\RegeditList.txt"
echo. >> "C:\Outlook\RegeditList.txt"
) else (
echo %regkey3_64% not found on: %1 - Check >> "C:\Outlook\KeysNotFoundlist.txt"
echo. >> "C:\Outlook\KeysNotFoundlist.txt"
echo. >> "C:\Outlook\RegeditList.txt" )
echo Checked %1 now going to loop! >> "C:\Outlook\RunLog.log"
echo. >> "C:\Outlook\RunLog.log"
:EOF
RunLog.log
Checked MJGXGTH now going to loop!
Checked 34ZXYC1 now going to loop!
Checked 34ZXYC1 now going to loop!
RegeditList.txt
MJGXGTH is 64bit
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\00002109A10000000000000000F01FEC\InstallProperties Found!
The Operation Completed Successfully
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0\Registration\{90120000-001A-0000-0000-0000000FF1CE} Found!
The Operation Completed Successfully
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\OUTLOOK Found!
The Operation Completed Successfully
34ZXYC1 is 32bit
Found!
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Registration\{90120000-001A-0000-0000-0000000FF1CE} Found!
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OUTLOOK Found!
34ZXYC1 is 64bit
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\00002109A10000000000000000F01FEC\InstallProperties Found!
KeysNotFoundList.txt
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0\Registration\{90120000-001A-0000-0000-0000000FF1CE} not found on: 34ZXYC1 - Check
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\OUTLOOK not found on: 34ZXYC1 - Check
如果您需要更多信息,请告诉我!
【问题讨论】:
-
也许你可以指出循环两次的代码,而不是用一堵代码墙打我们,让我们先搞清楚?
-
抱歉,见上文。但是第一次从
for读取 34zxyc1 时很棒,但是当文件中只有一个实例时会再次调用它 -
所以它发生在上面的第二行代码中,就在
@echo off之后? -
是的,但是一旦到达
:proccheck,它就会进入 64 面,据我所知,XP 在注册表中的任何地方都没有Wow6432Node....
标签: batch-file registry batch-processing remote-access regedit