2016-09-15 21 views
6

逗人节省电源为USB设备, 我挣扎于如何禁用Windows的津贴,以节省电力的USB读卡器,最后用RegShot我设法找到其负责注册的投入对于那些设置,以便设法创建两个REG查询被扫描计算机:禁用Windows的津贴,以通过批处理循环

REG QUERY HKLM /v SelectiveSuspendFeatureOn /s 
REG QUERY HKLM /v EnableSelectiveSuspend /s 

输出示例:

C:\用户\ ASD \ Deskto P> REG QUERY HKLM/V SelectiveSuspendFeatureOn /s的

HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \服务\ GemCCID SelectiveSuspendFeatureOn REG_DWORD为0x1

HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet002 \服务\ GemCCID SelectiveSuspendFeatureOn REG_DWORD为0x1

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ GemCCID SelectiveSuspendFeatureOn REG_DWORD 0x1

搜索结束:找到3个匹配结果。

C:\用户\ ASD \桌面> REG QUERY HKLM/V EnableSelectiveSuspend/s的

HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \枚举\ IUSB3 \ ROOT_HUB30 \ 4 & 22fe6fd & 0 \设备参数 EnableSelectiveSuspend REG_DWORD为0x1

HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet002 \枚举\ IUSB3 \ ROOT_HUB30 \ 4个& 22fe6fd & 0 \设备参数 EnableSelectiveSuspend REG_DWORD为0x1

HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \枚举\ IUSB3 \ ROOT_HUB30 \ 4 & 22fe6fd & 0 \德副参数 EnableSelectiveSuspend REG_DWORD为0x1

搜索结束:3匹配(ES)中。

所以我现在能够扫描这些地方和获取的注册表路径我希望每次他们每个人将它们设置为0后,所以我设法找到并使用这种蝙蝠:

@echo off 
cls 
:startreg 
cls 
set regq= REG QUERY HKLM /v SelectiveSuspendFeatureOn /s %curuser% 
for /f "tokens=* delims=~" %%A IN ('%regq% ^| findstr /i "HKEY_LOCAL_MACHINE"') DO set regkey=%%A 

Reg add %regkey% /v SelectiveSuspendFeatureOn /t REG_DWORD /d 0 /f 
rem Reg add %regkey% /v EnableSelectiveSuspend /t REG_DWORD /d 0 /f 

pause 
exit 

现在,这是我坚持,我得到了为.bat自身相关的两个请求/问题:

  1. REQ QUERY列出的每个项目应设置为0与REG ADD的命令 - 所以我认为这应该循环某种方式?输出命令必须生成.reg文件(示例如下)
  2. 如何为EnableSelectiveSuspend添加第二个选项,是否有双重循环的方法?

@@ EDIT。1 @@

原来,某些注册表项不能经由蝙蝠(路径不能被读取)应替代地生成这样reg文件改变:正确reg文件的

例如:

Windows注册表编辑器5.00版

[HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \服务\ GemCCID] “SelectiveSuspendFeatureOn”= DWORD:00000000

[ HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet004 \服务\ GemCCID] “SelectiveSuspendFeatureOn”= DWORD:00000000

[HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \服务\ GemCCID] “SelectiveSuspendFeatureOn”= DWORD:00000000

[HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet004 \枚举\ IUSB3 \ ROOT_HUB30 \ 4 0 \设备 参数] “EnableSelectiveSuspend”= DWORD:00000000

[HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet004 \枚举\ USB \ VID_0424 & PID_2512 \ 5 & 36b4634f 3 \设备 参数] “EnableSelectiveSuspend”= DWORD:00000000

[HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet004 \枚举\ USB \ VID_0424 & PID_2514 \ 6 & 234568e7 1 \设备 参数]“ EnableSelectiveSuspend“= DWORD:00000000

[HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \枚举\ IUSB3 \ ROOT_HUB30 \ 4 0 \设备 参数] ”EnableSelectiveSuspend“= DWORD:00000000

[HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \枚举\ USB \ VID_0424 & PID_2512 \ 5 & 36b4634f 3 \设备 参数] “EnableSelectiveSuspend”= DWORD:00000000

[HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \枚举\ USB \ VID_0424 & PID_2514 \ 6 & 234568e7 1 \设备 参数] “EnableSelectiveSuspend”= DWORD:00000000

期待您的答案。

Patryk

@@ EDIT 2 @@

我设法创造我所需要的逻辑:

@echo off 

cls 
:startreg 
cls 
echo Scanning computer in order to apply Power Managment adjustments for USB readers 
set NLM=^ 
set NL=^^^%NLM%%NLM%^%NLM%%NLM% 
echo Windows Registry Editor Version 5.00 > %1/scanned.reg 
echo. >> %1/scanned.reg 
set regq= REG QUERY HKLM /v SelectiveSuspendFeatureOn /s %curuser% 
for /f "tokens=* delims=\\n" %%A IN ('%regq% ^| findstr /i "HKEY_LOCAL_MACHINE"') DO echo [%%A] >> %1/scanned.reg & echo "SelectiveSuspendFeatureOn"=dword:00000000 >> %1/scanned.reg & echo. >> %1/scanned.reg 

set regq= REG QUERY HKLM /v EnableSelectiveSuspend /s %curuser% 
for /f "tokens=* delims=\\n" %%A IN ('%regq% ^| findstr /i "HKEY_LOCAL_MACHINE"') DO echo [%%A] >> %1/scanned.reg & echo "EnableSelectiveSuspend"=dword:00000000 >> %1/scanned.reg & echo. >> %1/scanned.reg 

regedit.exe /S %1/scanned.reg 

exit 

因此,这是一个扫描注册表,然后保存这些价值观为.reg关键并最终运行.reg文件以应用更改。

注册udpates后 - 需要重新启动系统。

这个有添加参数“路径”,所以你应该运行这个.bat参数例如“C:”或任何其他路径。

+1

不要更改CurrentControlSet以外的设置。您似乎试图更改多个设备的设置,而不知道它们是什么。此外,您似乎有一个'\ CurrentControlSet004 \'键,这可能表明您以前可能遭受过注册表损坏。您作为编辑附加的脚本设置了两个未使用的变量,其中包含一个未定义的变量,并且似乎将参数作为输入,在运行之前不进行验证。 – Compo

+1

尊敬的Compo公司, 这是为了找到USB集线器和设备,并禁用Windows的许可,以节省这些设备的电力,而不是导航槽设备管理器,并为几个设备手动执行。 您正在尝试不使用的变量,但是您没有发现该.reg文件正在生成吗? 作为输入的参数是我的安装所需的{path}变量。 – icek

+0

我知道文件打算做什么,并且您正在将路径作为输入参数**%1 **。请告诉我** ** NLM%**,**%NL%**和**%curuser%**的目的。如果你的意思是我没有注意到你正在向reg文件回应,那么你错了。我也充分意识到CurrentControlSet键的用途以及它们是如何工作的,并且任何一组破坏都意味着另一组将被用于修复。 *(破坏多于一套将是不明智的)*。 – Compo

回答

0

我设法创造我所需要的逻辑:

@echo off 

cls 
:startreg 
cls 
echo Scanning computer in order to apply Power Managment adjustments for USB readers 
echo Windows Registry Editor Version 5.00 > %1/scanned.reg 
echo. >> %1/scanned.reg 
set regq= REG QUERY HKLM /v SelectiveSuspendFeatureOn /s %curuser% 
for /f "tokens=* delims=\\n" %%A IN ('%regq% ^| findstr /i "HKEY_LOCAL_MACHINE"') DO echo [%%A] >> %1/scanned.reg & echo "SelectiveSuspendFeatureOn"=dword:00000000 >> %1/scanned.reg & echo. >> %1/scanned.reg 

set regq= REG QUERY HKLM /v EnableSelectiveSuspend /s %curuser% 
for /f "tokens=* delims=\\n" %%A IN ('%regq% ^| findstr /i "HKEY_LOCAL_MACHINE"') DO echo [%%A] >> %1/scanned.reg & echo "EnableSelectiveSuspend"=dword:00000000 >> %1/scanned.reg & echo. >> %1/scanned.reg 

regedit.exe /S %1/scanned.reg 

exit 

因此,这是一个扫描注册表,然后保存这些价值观为.reg关键,并最终运行.reg文件应用更改。

注册udpates后 - 需要重新启动系统。

这个有添加参数“路径”,所以你应该运行这个.bat参数例如“C:”或任何其他路径。