前提局域网内都开启了远程注册表服务
例本机 IP 为 192.168.1.101
1、局域网内批量启动服务并导入符合条件注册表
2、192.168.1.100 注册表 Hosts 也许有这样显示内容 -192.168.1.103,+192.168.1.100,-192.168.1.101,?192.168.1.102,+ (+允许访问,-拒绝访问,?仅查询)
2、192.168.1.103 注册表 Hosts 也许有这样显示内容 +192.168.1.100,?192.168.1.102+
3、如发现对方注册表里有 "-本机IP," 则删除 "-本机IP," 这一段后,再导入对方注册表. 或变为 "+本机IP,"
现在的做法是把注册表内容导出到对应文本里,去掉 -192.168.1.101, 这一段, 再导回对应 IP 注册表
目的:能不能不导出到文本,直接导入对方注册表,结果为如:
192.168.1.100 注册表 -192.168.1.103,+192.168.1.100,?192.168.1.102,+
192.168.1.103 注册表没有 -192.168.1.101, 则不变
高手帮助优化下代码- del/q tem_*
- set "ip1=100"&set "ip2=103"&set "ip3=192.168.1."
- for /l %%a in (%IP1%,1,%IP2%) do (
- ping %ip3%%%a -n 1 |find/i "ms">nul&&for /f "tokens=2* delims=: " %%i in ('sc \\%ip3%%%a qc 服务名^|find /i "START_TYPE"') do (
- if "%%i"=="4" sc \\%ip3%%%a config 服务名 start= auto >nul&&sc \\%ip3%%%a start 服务名 >nul&&echo 禁用启用: %ip3%%%a
- if "%%i" LSS "4" sc \\%ip3%%%a start 服务名>nul&&echo 服务启动: %ip3%%%a
- for /f "tokens=3" %%v in ('reg query \\%ip3%%%a\HKEY_LOCAL_MACHINE\SOFTWARE\注册表名 /v Hosts^|find /i "-本机IP,"') do (
- set "str=%%v"
- setlocal enabledelayedexpansion
- echo !str:-%ip%,=!
- endlocal
- )>tem_%ip3%%%a.txt&&for /f %%k in (tem_%ip3%%%a.txt) do reg add \\%ip3%%%a\HKEY_LOCAL_MACHINE\SOFTWARE\注册表名 /v Hosts /t REG_SZ /d %%k /f >nul
- ))
复制代码 |