run の使い方についてNo.05880
いけたに さん 08/06/30 17:41
 
いけたにです。

run を使用してバッチファイルを起動しようとしているのですが、
上手く動作させることができないので教えてください。

フォルダを検索してあるフォルダ中のバッチファイルを実行しようとするマクロを作
成したのですが、
一部のフォルダでバッチファイルの起動がエラーとなります。

現象が発生する最低限のマクロが以下のようになりました。

C:\Tmp\Work\test(1) フォルダにある test(1).bat をマクロで実行しようとするマ
クロです。

---
    $target_file = "C:\\Tmp\\Work\\test(1)\\test(1).bat";
    run "\"" + $target_file + "\"" + "> con";

    // 起動するまで少し待つ
    #delay =0;
    while( #delay <1000 )
    {
        #delay =#delay+1;
    }

    endmacro;
---

を実行すると、

---
'C:\Tmp\Work\test' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
---

という出力が行われ、バッチファイルが起動できません。

以前の過去ログを参考に、対象ファイル名をダブルクォーテーションで囲んでみまし
たが、
起動できないようです。

なんとなくパス中にカッコがあるとだめなような気がしますが、
ヘルプの読み方が悪いのか、ではどうすればよいのかが分かりませんでした。

こうすれば、という点がありましたら、ご助言いただければ幸いです。

使用環境:
  秀丸エディタ Ver 7.09 beta8 + Windows XP Pro. SP3

[ ]
RE:05880 run の使い方についてNo.05881
秀丸担当 さん 08/06/30 18:15
 

>run を使用してバッチファイルを起動しようとしているのですが、
>上手く動作させることができないので教えてください。
>

どうも、括弧があるとだめなようです。
ダブルクォーテーションは、秀丸エディタが文字列を解析するときに、ダブルク
ォーテーションの範囲を正しく認識していて、CrateProcessも成功しているよう
ですが、その後のバッチファイルの実行処理の中でだめになっているようです。

コマンドプロンプトで括弧付きのバッチファイル,EXEを実行すると同様のエラー
になるようです。
コマンドプロンプトの中でさらにダブルクォーテーションを書くとできるようで
す。

それと同じような動作になるように、cmd.exeを経由して以下のようにしてみた
らできました。

でもダブルクォーテーションが二重になっていて、これが正しい書き方なのかど
うかちょっと謎です。

run "cmd /c \"\"" + $target_file + "\"\"" + ">con";

[ ]
RE:05881 run の使い方についてNo.05882
いけたに さん 08/06/30 18:35
 
いけたにです。

>どうも、括弧があるとだめなようです。
(snip)
>コマンドプロンプトの中でさらにダブルクォーテーションを書くとできるようで
>す。

早速の調査、ありがとうございました。

>それと同じような動作になるように、cmd.exeを経由して以下のようにしてみた
>らできました。
>
>でもダブルクォーテーションが二重になっていて、これが正しい書き方なのかど
>うかちょっと謎です。
>
>run "cmd /c \"\"" + $target_file + "\"\"" + ">con";

試してみましたが、意図どおりにバッチファイルを起動できました。

今後、run 文使用時は
  run "cmd /c \"\"" + ... + "\"\""
で記述するようにしてみます。

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

[ ]