[解決済み】文字列から任意のネイティブコマンドを実行する方法とは?
質問
以下のようなシナリオで、私のニーズを表現することができます。 ネイティブコマンドとして実行される文字列を受け取る関数を作成します。
社内の他のコマンドラインユーティリティと連携して、そのまま実行できるコマンドを提供するのは、それほど突飛なアイデアではないでしょう。あなたはそのコマンドをコントロールできないので、次のことが必要です。 有効なコマンドを入力として受け入れる . 以上が、私が簡単に克服できない主なヒケツです。
-
コマンドは、スペースが含まれるパスに住んでいるプログラムを実行するかもしれません。
$command = '"C:\Program Files\TheProg\Runit.exe" Hello';
-
コマンドには、空白を含むパラメータを指定することができます。
$command = 'echo "hello world!"';
-
コマンドはシングルとダブルの両方の刻みを持つ可能性があります。
$command = "echo `"it`'s`"";
あるのか? 任意の これを実現するきれいな方法を教えてください。私は、贅沢で醜い回避策を考案することしかできませんでしたが、スクリプト言語としては、これは非常にシンプルであるべきだと感じています。
解決方法は?
Invoke-Expression
というエイリアスもあります。
iex
. 2 と 3 の例では、次のようになります。
iex $command
例1のように、exeが引用符で囲まれているため、そのままでは実行できない文字列もあります。これは、文字列の内容がそのままPowershellのコマンドプロンプトから実行するものであるため、そのまま動作します。
$command = 'C:\somepath\someexe.exe somearg'
iex $command
しかし、exe が引用符で囲まれている場合、その引用符の助けを借りる必要があります。
&
この例のように、コマンドラインから実行させるようにします。
>> &"C:\Program Files\Some Product\SomeExe.exe" "C:\some other path\file.ext"
そして、スクリプトでは
$command = '"C:\Program Files\Some Product\SomeExe.exe" "C:\some other path\file.ext"'
iex "& $command"
おそらく、コマンド文字列の最初の文字が
"
この素朴な実装のように。
function myeval($command) {
if ($command[0] -eq '"') { iex "& $command" }
else { iex $command }
}
しかし、他のケースで別の方法で呼び出さなければならないものが見つかるかもしれません。そのような場合は、次のいずれかの方法で
try{}catch{}
特定の例外タイプやメッセージのために、あるいはコマンド文字列を調べてください。
相対パスではなく、常に絶対パスを受け取るようにすれば、上記2つ以外の特殊なケースは、あったとしても、あまりないはずです。
関連
-
[解決済み] GDBデバッグセッションを自動化する最も良い方法は何ですか?
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] Bashでコマンドライン引数を解析するには?
-
[解決済み] PowerShellでコードをコメントアウトする方法とは?
-
[解決済み] Bashコマンドからテキストファイルの内部を検索・置換する
-
[解決済み] 複数行のコマンドを入力する方法
-
[解決済み] PowerShellでコマンドライン引数を処理する方法
-
[解決済み] Windowsのコマンドライン環境を使って、ファイル内のテキストを検索・置換するにはどうすればよいですか?
-
[解決済み] ディレクトリ内のすべてのファイルに対してコマンドを実行する
-
[解決済み】スクリプト言語 vs プログラミング言語【終了しました
最新
-
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 実装 サイバーパンク風ボタン