私はDWORD型の値を見つけ出してキーの中でSpecialUserRegDir
に出力する次のコードを持っています。このコードの2番目の部分は、各反復で単純に増加する数値です。残念ながら、正しく計算されているように見える変数にアクセスする方法を見つけることができません。ループ内にDelayedExpansion変数を表示
@echo OFF
@setlocal EnableExtensions EnableDelayedExpansion
set SpecialUserRegDir=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
set number=0
set /a number+=1
REG QUERY "%SpecialUserRegDir%" /s | for /F %%f in ('findstr "REG_DWORD"') do @(
set /a number+=1 :: Output: Values I need (2,3 etc)
@Echo !number! :: Output: !number!
@Echo %number% :: Output: 1
@echo %%f :: Output: [name of registry value]
)
@Echo !number! :: Output: 1
@Echo %number% :: Output: 1
レジストリの部分はそれほど重要ではないので動作します。私はループ構造を維持し、ループ内からnumber
の値にアクセスする方法があるかどうか疑問に思っています。
EDIT:
for /F %%f in ('REG QUERY "%SpecialUserRegDir%" /s ^| findstr "REG_DWORD"') do (
set /a number+=1 :: Output: Values I need (2,3 etc)
@Echo !number! :: Output: !number!
@Echo %number% :: Output: 1
@echo %%f :: Output: [name of registry value]
)
@Echo !number! :: Output: 4 (correct, because there are 3 values)
@Echo %number% :: Output: 1 (expected....)
EDIT 2:出力のみ1は、新しいコードを変更最初の編集を無視します。私はコードを開いて複数のメモ帳を持っていたし、EnableDelayedExpansion
なしで古いバージョンに新しいコードを保存した。
私はこのコードを試しました。ポストループ!数!今すぐ正しい情報が得られますが、ループの内部はまったく変更されていません。あなたが指摘した問題を理解していると思いますが、明日もう少し実験を行い、それがどのようになるかを見ていきます。 – Zero
2番目の問題の説明を追加しました(トークンオプションがありません) – jeb