run文でのbatファイルを実行No.00185
ラムダ さん 98/07/21 15:50
 
初めまして、ラムダと申します。
早速ですが、質問です。

run関数でbatファイルを実行する事はできるのでしょうか?

dir %1 /b > %2

上記の内容のbatファイルをマクロ内からrun文で実行したいのですが、コマンドプロ
ンプトで「内部コマンドに登録されていない云々」というメッセージが表示されてし
まいます。

実行しているrun文は以下の通りです。

run $変数1 + "\\*.txt " + $変数2;

また、上記のrun文の実行後に変数2のファイルをオープンして、内容を読み込みたい
のですが、タイミング的に問題は発生しないでしょうか?

どなたか、ご存知の方がいらっしゃいましたら、御教授お願い致します。

[ ]
RE:00185 run文でのbatファイルを実行No.00186
番頭++ さん 98/07/21 17:29
 
>dir %1 /b > %2

答えにはなっていませんが、
dir /b と言うことなので、こんなマクロでファイル名が取れます。

希望するディレクトリで「新規作成」を行なった後に、
このマクロを実行します。

または、input で入力をしない (ヌルの文字列) と grep のボックスが現れます。
そこでディレクトリを指定できます。
  ・「検索する文字列」は「.」 - 必ず指定する
  ・「正規表現」、「ファイル名一覧だけ作成」をチェック - 必ず指定する
  ・Ver. 2.24 では「アイコン状態で実行」はチェックしないで下さい。

[Esc] でキャンセルします。

ファイルリストが無いときには、grep の結果を中止します。
ファイルを閉じてます。


//  test1.mac
//  "(&F) file list - directory "
ppkn_file_list1:
    $wk1 = input("dir - " + directory2+"\n\nfile list - 検索するファイル ?","*.txt");
    if( ! result ){ endmacro;   }
    if( strlen($wk1) == 0 ){
        grepdialog;
        if( ! result ){ endmacro;   }
        if( iskeydown( 0x1B ) ){    //  [Esc]
            if( basename == "" && x+y == 0 ){
                quit;   endmacro;
            } else {
                endmacro;
            }
        }
    } else {
        grep ".", $wk1, directory2, regular, filelist;
    }
    showwindow 1; // ???
    if( basename == "" && code == eof ){
        setsearch "", 0x00; //  reset.
        quit;   endmacro;
    }
    disableinvert;  disabledraw;
//R replaceallfast "\\(1\\)$", "", regular;
    replaceallfast "\\([0-9]*\\)$", "", regular;
    #i = result;
    gofiletop;
    enableinvert;   enabledraw;
    message str(#i) + " - file(s) found !";
    setsearch "", 0x00; //  reset. 記憶にありません !
//R selectall;  tab;    escape; gofiletop;
endmacro;

[ ]
RE:00185 run文でのbatファイルを実行No.00187
杉浦 まさき さん 98/07/22 00:40
 
ラムダさん、はじめまして。
 杉浦 まさき と申します。

>実行しているrun文は以下の通りです。
>run $変数1 + "\\*.txt " + $変数2;

 run "command.com /C batfilename.bat " + $変数1 + "\\*.txt " + $変数2;

と書いて下さい。

>また、上記のrun文の実行後に変数2のファイルをオープンして、内容を読み込みたい
>のですが、タイミング的に問題は発生しないでしょうか?

あくまでも実行結果をファイルに保存した物を作りたければ、
 run の代わりに runsync2 を使えば大丈夫です。
 #runsync(2) は run とは違って
  起動したプロセスが終了するまで待機しています。

で、ファイルにリダイレクトせずに結果を表示させたいだけなら
 以下のコマンドでOKです。
 #但し、環境によってはちょっと不安定になることがあります。

 run "command.com /C dir " + $変数1 + " /b";

このコマンドの結果(標準出力)は新規秀丸ウィンドウに出力されます。


[ ]