2

変数が含まれている文字列に問題があり
ます。レジストリのキーを次のように読み取ります。

call:ReadReg "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" "Desktop"
echo %RegValue%

:ReadReg
FOR /F "usebackq tokens=1-3" %%A IN (`REG QUERY "%~1" /v "%~2" 2^>nul`) DO (
    set RegName=%%A
    set RegType=%%B
    set RegValue=%%C
)
goto:eof

ただし、RegValue で返される値は:%USERPROFILE%\Desktop ではなく:C:\Documents and Settings\username\Desktop

ECHO ライン表示:

C:\Documents and Settings\alopez>echo %USERPROFILE%\Bureau
%USERPROFILE%\Bureau

レジストリ値を適切なパスに変換したい

4

1 に答える 1

4

置換これset RegValue=%%Cによりcall set RegValue=%%C、変数が2回拡張されます。1回はcallコマンド用で、もう1回はsetコマンド用です。このサンプルの.batスクリプトを実行して、実際の動作を確認してください。

@echo off

set x=%%Path%%
echo %x%
echo.
call echo %x%
call set x=%x%
echo.
echo %x%
pause >nul
于 2013-02-06T14:28:06.380 に答える