0

私は、ほとんど機能する非常に単純な Windows スクリプトを作成しようとしています(「ほぼ」ここに私の存在を説明しています...)。いくつかのコマンドを連鎖させたいと思っていました。それらの 1 つは、レジストリ キーを追加するためのものです。次のコマンドでトリックを行う方法を見つけました:

REG ADD "HKCU\Software\Microsoft\Office\12.0\Common\DRM" /v "AdminTemplatePath" /t REG_EXPAND_SZ /d ^%LocalAppData^%\Microsoft\DRM\Templates /f

「 %LocalAppData%\Microsoft\DRM\Templates 」という値を持つ「 AdminTemplatePath 」という名前のキーを追加したいと考えています。

問題は環境変数%LocalAppData%に関するものです。を実行すると、コマンドラインを機能させるには、各「% 」の前に「 ^REG ADD /? 」を付ける必要があると表示されます (「 ^」がないと、変数は解釈され、その絶対値に置き換えられます)。

プロンプトに完全なコマンドを入力すると、すべて正常に動作します。値フィールドに「%LocalAppData%\Microsoft\DRM\Templates」があります。このコマンドをコピーしてバッチ ファイルに貼り付けても、実行時に問題はありません。システムは、すべて問題ないと言っています。しかし実際には、値は " ^\Microsoft\DRM\Templates " または " \Microsoft\DRM\Templates " です。

完全なコマンドで「 ^ 」を削除して再試行すると、値は「 C:\Users\My User\AppData\Local\Microsoft\DRM\Templates」になります。

環境変数をそのままにして、バッチファイルを実行するコツを知っている人はいますか?

ありがとうございました。

4

1 に答える 1

1

^ はバッチ スクリプトのエスケープ文字であるはずですが、私も常に問題を抱えていました。

代わりに、二重引用符で囲んで、二重のパーセンテージを試してください。

^%LocalAppData^%\Microsoft\DRM\Templates

する必要があります

"%%LocalAppData%%\Microsoft\DRM\Templates"

バッチ スクリプトのエスケープ文字の詳細については、http://www.robvanderwoude.com/escapechars.phpを参照してください。

于 2012-05-30T13:48:01.787 に答える