禁用Windows允许通过批量循环为USB设备节省电量

ice*_*cek 6 windows usb loops batch-file

亲爱的,我一直在努力解决如何禁用Windows以节省USB读卡器的电量,最后使用RegShot我设法找到负责这些设置的注册表输入,因此我设法创建了两个扫描计算机的reg查询:

REG QUERY HKLM /v SelectiveSuspendFeatureOn /s
REG QUERY HKLM /v EnableSelectiveSuspend /s
Run Code Online (Sandbox Code Playgroud)

示例输出:

C:\ Users\asd\Desktop> REG QUERY HKLM/v SelectiveSuspendFeatureOn/s

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

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

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

搜索结束:找到3个匹配项.

C:\ Users\asd\Desktop> REG QUERY HKLM/v EnableSelectiveSuspend/s

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

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Enum\IUSB3\ROOT_HUB30\4&22fe6fd&0\Device Parameters EnableSelectiveSuspend REG_DWORD 0x1

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\IUSB3\ROOT_HUB30\4&22fe6fd&0\De vice参数EnableSelectiveSuspend REG_DWORD 0x1

搜索结束:找到3个匹配项.

所以现在我能够扫描那些地方并获得注册表路径后,我想将它们中的每一个设置为0,所以我设法找到并使用这个.bat:

@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
Run Code Online (Sandbox Code Playgroud)

现在这是我卡住的地方,我收到了两个与.bat本身有关的请求/问题:

  1. REQ QUERY中列出的每个项目都应该使用REG ADD命令设置为0 - 所以我相信这应该以某种方式循环?必须为.reg文件生成输出命令(例如下面的例子)
  2. 如何为EnableSelectiveSuspend添加第二个选项,有没有办法双循环?

@@ EDIT.1 @@

事实证明,有些注册表项无法通过.bat更改(路径无法读取),因此应生成.reg文件:

正确.reg文件的示例:

Windows注册表编辑器版本5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\GemCCID]"SelectiveSuspendFeatureOn"= dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet004\services\GemCCID]"SelectiveSuspendFeatureOn"= dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\GemCCID]"SelectiveSuspendFeatureOn"= dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet004\Enum\IUSB3\ROOT_HUB30\4&32305751&0\Device Parameters]"EnableSelectiveSuspend"= dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet004\Enum\USB\VID_0424&PID_2512\5&36b4634f&0&3\Device Parameters]"EnableSelectiveSuspend"= dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet004\Enum\USB\VID_0424&PID_2514\6&234568e7&0&1\Device Parameters]"EnableSelectiveSuspend"= dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\IUSB3\ROOT_HUB30\4&32305751&0\Device Parameters]"EnableSelectiveSuspend"= dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_0424&PID_2512\5&36b4634f&0&3\Device Parameters]"EnableSelectiveSuspend"= dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_0424&PID_2514\6&234568e7&0&1\Device Parameters]"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
Run Code Online (Sandbox Code Playgroud)

所以这个是扫描Windows注册表,然后将这些值保存为.reg键并最终运行.reg文件以应用更改.

注册udpates后 - 需要重启系统.

这个添加了参数"path",因此您应该使用参数"C:"或任何其他路径运行此.bat.

ice*_*cek 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
Run Code Online (Sandbox Code Playgroud)

因此,此操作会扫描 Windows 注册表,然后将这些值保存为 .reg 密钥,并最终运行 .reg 文件以应用更改。

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

该文件添加了参数“path”,因此您应该使用参数运行此 .bat,例如“C:”​​或任何其他路径。