レジストリキーの値を取得し、バッチファイルを使用して変数に格納する必要があります。
私はロジックを例示するために基本的なコマンドラインを記述しました(変数を設定する代わりにエコーを使用します):
for /f "tokens=3 delims= " %%a in ('reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "LastUsedUsername" ^|findstr /ri "REG_SZ"') do echo=%%a
ユーザー名が画面に表示されることを期待していますが、実際には起こりません。
レジストリ値 "LastUsedUsername"は空ではなく、実際にはデータが含まれています。また、区切り文字はスペースではなくタブです。
[〜#〜]編集[〜#〜]
入力するだけで
reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "LastUsedUsername"
...戻ります:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
LastUsedUsername REG_SZ Administrador
このコード
reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "LastUsedUsername" ^| findstr /ri "REG_SZ"
... 戻り値:
LastUsedUsername REG_SZ Administrador
次に、forコマンドを使用すると、echoからの出力がありません。
デフォルトはスペースであり、regクエリが返すものであるため、delimsスイッチはまったく必要ありません。このforループ用のbatファイルを作成すると、私がいじっているキーでレジストリが正しいエコーが表示されます。たとえば、RGB背景色の "Red"値は55です。
for /f "tokens=3" %%a in ('reg query "HKCU\Control Panel\Colors" /V Background ^|findstr /ri "REG_SZ"') do echo %%a
DOSコマンドの構文は正しいです。正しいレジストリキー値があるかどうかを質問します。コマンドラインにreq query ...の部分を入力して、何が返されるかを確認してください。 Win 7を実行していますが、HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogonで定義されているキーLastUsedUsernameが見つかりません
承認された回答は一部の状況では正しくありません-レジストリから読み取られた値に空白文字(スペース(プログラムファイル(x86))など)が含まれている場合、値の最初の部分( 'プログラム')のみが返されます。私が解決したことは:
FOR /F "tokens=2* skip=2" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion" /v "CommonFilesDir"') do echo %%b
結果はC:\Program Files\Common Files