1

次のレジストリ エントリをループしてさまざまなサブ キーを更新するバッチ スクリプトを作成しようとしています。

"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\"

例えば:

reg add HKLM\System\CurrentControlSet\Control\Print\<Some Printer>\PrinterDriverData /t REG_DWORD /v SSNPNotifyEventSetting /d 0

インストールされている各プリンターに対してその更新を実行する必要があり、FORステートメントで実行できるはずです。FOR ステートメントが苦手なので、助けが必要です。これは私がこれまでに研究/試したことです:

set var1="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\"

FOR /F "PrinterDriverData" %%F IN ('REG QUERY %var1%') DO REG ADD %var1%\%%F\PrinterDriver\Data /t REG_DWORD /v SSNPNotifyEventSetting /d 0

私はこれがおそらくかなり外れていることを知っていますが、私が自分で理解できる限りです. どんな助けでも大歓迎です!

4

2 に答える 2

1

これが私が思いついた解決策です。それが最良の方法であるか、最も単純な方法であるかはわかりませんが、これまでのところ機能しています。批判または改善してください。

set key="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers"

reg query %key% > temp.txt

FOR /F "delims=" %%a IN ('findstr /B "HKEY_LOCAL_MACHINE" temp.txt') DO (
    if /I NOT "%%a" == %key% (
        reg add "%%a\PrinterDriverData" /f /t REG_DWORD /v SSNPNotifyEventSetting /d 0 
    )
)

まず、レジストリにクエリを実行し、必要なすべてのレジストリ キーをテキスト ファイルに保存します。次に、FOR ループ内で、別のレジストリ キーのファイルを検索し、ルート キーにない場合は新しいサブ キーを追加します。プリント サーバーを修正するために構築しているツールにこれを追加しましたが、これまでのところすばらしいものです。

于 2012-11-18T22:10:58.297 に答える
0

レジストリ キーからプリンターを一覧表示できる次のバッチ ファイルを参照してください。プリンター名をスクリプトに渡して、さらに多くのことを行うことができます。

list-printers.bat

@echo off
for /f "tokens=1-8 delims=\" %%a in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers"') do if "%%g" NEQ "" @echo %%g
于 2012-11-18T01:45:22.403 に答える