标题: [注册表类] 求助,XP系统出现命令行参数过多.(win7,xp)下提示'reg' 不是内部或外部命令 [打印本页]
作者: jason128 时间: 2014-12-18 15:33 标题: 求助,XP系统出现命令行参数过多.(win7,xp)下提示'reg' 不是内部或外部命令
以下代码是最终想用的.在win8下运行没有报错.
但是在win7跟xp机上面运行就会说不是内部或外部命令,也不是可运行的程序- @echo off
- ::path
- ::keyword
- ::bakfile
- set path=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}
- set keyword=NetworkAddress
- set bakfile=C:\reg4d36e972Bak.reg
-
- ::Bak up reg
- echo "Reg backup..."
- reg export %path% %bakfile%
-
- ::Iterate out put path\keywords and delete
- for /f "tokens=* delims= " %%i in ('reg query %path% /s /v %keyword% ^| findstr %path%') do (
- echo "Removing... " %%i
- reg delete %%i /v %keyword% -f
- )
-
- rem netsh winsock reset
- rem shutdown -r
- pause
复制代码
经过百度.在文件开头加上这些代码.就不会报这个错了.但是感觉不是太安全.希望各位大大指点一下(这段bat是要在很多台机上运行的.所以没办法每一台机去设置环境变量)- cd..
- cd..
- cd..
- cd c:/WINDOWS/SYSTEM32
复制代码
而在XP系统上,单独运行以下代码,则会报
"C:\WINDOWS\system32>reg query HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Cl
ass\{4d36e972-e325-11ce-bfc1-08002be10318} /s /v NetworkAddress
错误: 命令行参数太多
C:\WINDOWS\system32>pause
请按任意键继续. . ."- cd..
- cd..
- cd..
- cd c:/WINDOWS/SYSTEM32
- reg query HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318} /s /v NetworkAddress
- pause
复制代码
作者: jason128 时间: 2014-12-18 15:34
回复 1# jason128
感谢各位大大..时间比较紧.希望各位帮助了.
作者: apang 时间: 2014-12-18 16:07
path 是系统变量,在批处理中修改了它的值,当然会出现找不到路径的错误
xp下 reg query 的 /s 和 /v 开关不能一起使用,用 if 判断吧
作者: jason128 时间: 2014-12-18 18:09
回复 3# apang
另外有个很奇怪的地方..在搜索HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}下的键好像都找不到..
但是HKEY_LOCAL_MACHINE\SOFTWARE\Adobe这个里面的键就可以搜到..是权限的问题吗
作者: shelluserwlb 时间: 2014-12-18 20:23
path是环境变量保留字。 不要用path作为自己程序中的变量名。
作者: Linuxer 时间: 2014-12-19 09:57
计算机or我的电脑,右键属性,高级-系统变量,改下PATH的值。- %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;
复制代码
楼上几位都说的很清楚了,,PATH是系统变量,,不要作为自定义变量名来使用!
作者: jason128 时间: 2014-12-19 10:16
回复 6# Linuxer
改系统变量是可以..但是因为是要批量的操作一大堆机子..所以这样去改系统变量不是太可行..暂时只能手动去到system32去操作.
作者: Linuxer 时间: 2014-12-19 10:37
本帖最后由 Linuxer 于 2014-12-19 10:39 编辑
回复 7# jason128
进入system32,然后批处理执行:- set path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;
复制代码
作者: DAIC 时间: 2014-12-19 10:58
回复 7# jason128
他们的意思是让你改脚本里面的变量名,而不是去修改操作系统的环境变量。
@echo off
::mypath
::keyword
::bakfile
set mypath=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}
set keyword=NetworkAddress
set bakfile=C:\reg4d36e972Bak.reg
::Bak up reg
echo "Reg backup..."
reg export %mypath% %bakfile%
::Iterate out put mypath\keywords and delete
for /f "tokens=* delims= " %%i in ('reg query %mypath% /s /v %keyword% ^| findstr %mypath%') do (
echo "Removing... " %%i
reg delete %%i /v %keyword% -f
)
rem netsh winsock reset
rem shutdown -r
pause
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |