web-dev-qa-db-ja.com

REGADDは/ fを無視します

私のスクリプト:

@ECHO OFF

SET RegPath="HKEY_CURRENT_USER\Software\Microsoft\VBA\7.0\"

REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit" /v LastKey /t REG_SZ /d "%RegPath%" /f

START RegEdit

/fが含まれているにもかかわらず、エントリを置き換えるように常に求められます。 REG ADDコマンドでプロンプトを表示せず、エントリを置き換えるにはどうすればよいですか?

3
Kevin Jones

そのまま実行すると、レジストリに追加された値は実際にはHKEY_CURRENT_USER\Software\Microsoft\VBA\7.0" /f-孤立した引用符を含み、別の引数として意図された/fであることがわかります。

ここでの問題は、変数の呼び出しでは言うまでもなく、変数自体を介して引用符を追加しすぎていることです。そのため、引数の開始位置と終了位置についてRegが混乱します。

これらの無関係な引用符をすべて削除すると、意図したとおりに機能します。

@ECHO OFF

SET RegPath=HKEY_CURRENT_USER\Software\Microsoft\VBA\7.0\

REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit" /v LastKey /t REG_SZ /d %RegPath% /f

START RegEdit
5