[解決済み] バッチスクリプトでの二重引用符のエスケープ
2022-12-15 10:14:03
質問
バッチファイルのパラメータの二重引用符をすべてエスケープされた二重引用符に置き換えるには、どうしたらよいでしょうか。これは私の現在のバッチ ファイルで、そのコマンド ライン パラメータをすべて文字列の中に展開します。
@echo off
call bash --verbose -c "g++-linux-4.1 %*"
そして、この文字列を使って、Cygwinのbashを呼び出し、Linuxのクロスコンパイラを実行するのです。残念ながら、私のバッチ ファイルに渡されるパラメーターはこのようなものです。
"launch-linux-g++.bat" -ftemplate-depth-128 -O3 -finline-functions
-Wno-inline -Wall -DNDEBUG -c
-o "C:\Users\Me\Documents\Testing\SparseLib\bin\Win32\LinuxRelease\hello.o"
"c:\Users\Me\Documents\Testing\SparseLib\SparseLib\hello.cpp"
ここで、最初に渡されたパスの周りの最初の引用符は、GCCに渡される文字列を早々に終了させ、残りのパラメータを直接bashに渡しています(これは見事に失敗しています)。
私は、もし私がパラメータを単一の文字列に連結し、引用符をエスケープすることができれば、うまくいくはずだと想像していますが、私は、これを行う方法を決定するのに苦労しています。誰か知っていますか?
どのように解決するのですか?
結局、Googleが答えを出してくれました。バッチでの文字列置換の構文はこうです。
set v_myvar=replace me
set v_myvar=%v_myvar:ace=icate%
これは、"replicate me"を生成します。私のスクリプトは今このようになります。
@echo off
set v_params=%*
set v_params=%v_params:"=\"%
call bash -c "g++-linux-4.1 %v_params%"
のすべてのインスタンスを置き換えます。
"
を
\"
で、bash用に適切にエスケープされています。
関連
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] バッチファイルに引数を渡すにはどうしたらいいですか?
-
[解決済み] シェルスクリプトでブール変数を宣言して使用するにはどうすればよいですか?
-
[解決済み] Windowsのバッチファイルから長いコマンドを複数行に分割する
-
[解決済み] Bashのシングルクォートとダブルクォートの違い
-
[解決済み] MySQLでシングルクォート、ダブルクォート、バックスティックを使用する場合
-
[解決済み] jQueryでHTML文字列をエスケープする
-
[解決済み】バッチ/cmdで "コメントアウト"(コメント追加)するには?
-
[解決済み】PowerShellスクリプトを実行する方法
-
[解決済み】Windowsのバッチファイル:.batと.cmdの違いは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン