パラメータ私はそれがパスだから、それは引数(パス)エスケープ「二重引用符は」
runas /user:abc "icacls %1 /grant Everyone:(F) /T"
かかりますが、引数%1
はすでに"
が含まれているバッチスクリプト(に次のように実行したいですコンテキストメニューの[送信先]に引き継がれています - 私はこれをあまり支配しません)。コマンドがバッチスクリプトで実行するとき だから、それは次のように実行します:
runas /user:abc "icacls "c:\folder" /grant Everyone:(F) /T"
をだから、明らかに私は%1
によって作成された"
Sをエスケープする必要があります。 %1
よりも引用符をエスケープするように文字列操作を実行するにはどうすればよいですか?あなたは\"
Hereを使用することができるはず
もっと分かりやすいように質問を編集しました – laggingreflex
%1がスペースを含むパスの場合はどうなりますか? –
'' ''の上に '" "を使用するのはいつですか?バッチファイルは本当に' '' 'でエスケープされ、' \ "'バージョンは非バッチプログラム(C++でコード化された '' runas') \をエスケープ文字として認識する言語)。したがって、他のバッチスクリプト(またはバッチ関数(例: 'CALL:function" parameterWith "EscapedQuote" ')に渡すときに、変数を非バッチプログラムと' '" 'に渡すときにのみ' \ "'を使用します) –