11

リトル・ウィリスです。バッチ スクリプトを使用して、.jar ファイルをダブルクリックするときに使用される既存のレジストリ キーを編集しようとしています。問題は、入力しようとしているデータに引用符が含まれていることですが、文字列と見なされるには引用符も必要です。

例:

reg add "HKEY_LOCAL_MACHINE\Software\Classes\jarfile\shell\open\command" /v "" /t REG_EXPAND_SZ /d "C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %* /f

これをバッチ スクリプトで実行すると、コマンド ウィンドウに「エラー: コマンド ライン パラメータが多すぎます」と出力されます。

これを簡単にするために。"C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %* を引用符と %1 と %* をそのまま含むデータとしてレジストリ キーを追加したい実際のステートメントや文字列には変換されません。

編集:

レジストリは通常、次のコマンド ライン文字列を使用して追加されます。

ftype jarfile="C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*  

コマンド ラインでは問題なく動作しますが、バッチ スクリプトでこれを使用したときの以下のコードと同様に、「%1」と %* は表示されません。

4

4 に答える 4

19

内側の引用符をエスケープするには、バックスラッシュを使用します。つまり、次のようになります。

reg add "HKEY_LOCAL_MACHINE\Software\Classes\jarfile\shell\open\command" /v "" /t REG_EXPAND_SZ /d "\"C:\Program Files\Java\jre7\bin\javaw.exe\" -jar \"%1\" %*" /f
于 2012-03-05T02:21:00.800 に答える
13

パーセント リテラルは、バッチ ファイルで 2 倍にする必要があります。\"%%1\" %%*"

于 2012-03-05T04:35:20.340 に答える
2

dbenhamの回答に加えて、ロケーション パスにはバックスラッシュと引用符を使用する必要があります。
(つまり、"\"C:\Program Files.....の代わりに使用する必要があります"C:\Program Files.....

&したがって、これは典型的なパーセント記号追加の問題に対する最終的な答えです。

reg add "HKEY_LOCAL_MACHINE\Software\Classes\jarfile\shell\open\command" /v "" /t REG_EXPAND_SZ /d "\"C:\Program Files\Java\jre7\bin\javaw.exe\" -jar \"%%1\"" /f

ありがとうドベンハム!

于 2013-10-15T08:56:33.240 に答える
1

別の方法として、一重引用符を使用することもできます。アプリケーションによっては、正しく読み取ることができます。例:

reg add "HKEY_LOCAL_MACHINE\Software\Classes\jarfile\shell\open\command" /v "" /t REG_EXPAND_SZ /d "'C:\Program Files\Java\jre7\bin\javaw.exe\' -jar '%1' %*" /f
于 2015-02-08T04:38:30.113 に答える