找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 34742|回复: 8

[注册表类] 求助,XP系统出现命令行参数过多.(win7,xp)下提示'reg' 不是内部或外部命令

[复制链接]
发表于 2014-12-18 15:33:20 | 显示全部楼层 |阅读模式
以下代码是最终想用的.在win8下运行没有报错.
但是在win7跟xp机上面运行就会说不是内部或外部命令,也不是可运行的程序
  1. @echo off
  2. ::path
  3. ::keyword
  4. ::bakfile
  5. set path=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}
  6. set keyword=NetworkAddress
  7. set bakfile=C:\reg4d36e972Bak.reg

  8. ::Bak up reg
  9. echo "Reg backup..."
  10. reg export %path% %bakfile%

  11. ::Iterate out put path\keywords and delete
  12. for /f "tokens=* delims= " %%i in ('reg query %path% /s /v %keyword% ^| findstr %path%') do (
  13.         echo "Removing...    " %%i
  14.         reg delete %%i /v %keyword% -f
  15. )

  16. rem netsh winsock reset
  17. rem shutdown -r
  18. pause
复制代码
经过百度.在文件开头加上这些代码.就不会报这个错了.但是感觉不是太安全.希望各位大大指点一下(这段bat是要在很多台机上运行的.所以没办法每一台机去设置环境变量)
  1. cd..
  2. cd..
  3. cd..
  4. 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
请按任意键继续. . ."
  1. cd..
  2. cd..
  3. cd..
  4. cd c:/WINDOWS/SYSTEM32
  5. reg query HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318} /s /v NetworkAddress   
  6. pause
复制代码
 楼主| 发表于 2014-12-18 15:34:19 | 显示全部楼层
回复 1# jason128


    感谢各位大大..时间比较紧.希望各位帮助了.
发表于 2014-12-18 16:07:14 | 显示全部楼层
path 是系统变量,在批处理中修改了它的值,当然会出现找不到路径的错误
xp下 reg query 的 /s 和 /v 开关不能一起使用,用 if 判断吧
 楼主| 发表于 2014-12-18 18:09:51 | 显示全部楼层
回复 3# apang


    另外有个很奇怪的地方..在搜索HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}下的键好像都找不到..
但是HKEY_LOCAL_MACHINE\SOFTWARE\Adobe这个里面的键就可以搜到..是权限的问题吗
发表于 2014-12-18 20:23:03 | 显示全部楼层
path是环境变量保留字。  不要用path作为自己程序中的变量名。
发表于 2014-12-19 09:57:48 | 显示全部楼层
计算机or我的电脑,右键属性,高级-系统变量,改下PATH的值。
  1. %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;
复制代码
楼上几位都说的很清楚了,,PATH是系统变量,,不要作为自定义变量名来使用!
 楼主| 发表于 2014-12-19 10:16:22 | 显示全部楼层
回复 6# Linuxer


    改系统变量是可以..但是因为是要批量的操作一大堆机子..所以这样去改系统变量不是太可行..暂时只能手动去到system32去操作.
发表于 2014-12-19 10:37:59 | 显示全部楼层
本帖最后由 Linuxer 于 2014-12-19 10:39 编辑

回复 7# jason128

进入system32,然后批处理执行:
  1. set path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;
复制代码
发表于 2014-12-19 10:58:28 | 显示全部楼层
回复 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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 00:24 , Processed in 0.010278 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表