ms-dosのメッセージを見たいNo.02744
haru さん 01/12/05 09:00
 
いつも、御世話様です。

 マクロで run を実行した後、dos の場面で何かメッセージが表示
される場合があります。このメッセージを見たいのですが、すぐに
win に戻ってしまいます。
 一時停止する方法はないですか? pause をやってみましたが、駄
目でした。

よろしくお願いします。

[ ]
RE:02744 ms-dosのメッセージを見たいNo.02747
ENCODINGSHIFTJIS さん 01/12/05 12:21
 
> マクロで run を実行した後、dos の場面で何かメッセージが表示
>される場合があります。このメッセージを見たいのですが、すぐに
>win に戻ってしまいます。
> 一時停止する方法はないですか? pause をやってみましたが、駄

            ● >con で受ける方法  メッセージは編集面に入る
            // DOSmess.mac
            run "command.com /c  copy 666 nul >con";

            上を動かすと、新面にメッセージが、選択範囲がある時実行すると
            選択範囲が置き換わる

            ● .BAT に対応する .PIF のプロパティで
            終了時にウィンドウを閉じない、に設定する。(.BAT で動かす場合)

            ● メッセージが出るのがわかるのなら、.BAT で > を使い
            メッセージをファイル出力して、秀丸でそのファイルを読み込む。

[ ]
RE:02744 ms-dosのメッセージを見たいNo.02748
TAKA さん 01/12/05 12:23
 
TAKA です。

> マクロで run を実行した後、dos の場面で何かメッセージが表示
>される場合があります。このメッセージを見たいのですが、すぐに
>win に戻ってしまいます。
> 一時停止する方法はないですか? pause をやってみましたが、駄
>目でした。

2つ方法があります。


[その1]dosプロンプトを止めてします。

バッチファイルを用意してそのバッチファイルの中にpauseを入れ、
バッチファイルをrun(runsync2)で呼び出す。
ここでは、引数なしのfcコマンドを例とする。

pauseでだめということですが、この方法とは違う方法を使ったの
かな?
具体的にどうやってのかが分かりませんでしたが。

// TEST.bat(ここから)
fc
pause
// TEST.bat(ここまで)

// テストマクロ(ここから)
    runsync2 "TEST.bat";    // 実際にはフルパスで定義
    endmacro;
// テストマクロ(ここまで)


[その2]標準出力をリダイレクトする

リダイレクトを使って、実行結果を秀丸にはりつける。

// テストマクロ(ここから)
    $Command = "fc";
    run $Command + " > con";
    endmacro;
// テストマクロ(ここまで)

[ ]
RE:02744 ms-dosのメッセージを見たいNo.02751
ひろ さん 01/12/05 12:30
 
 haru さん今日は、ひろです。
>  マクロで run を実行した後、dos の場面で何かメッセージが表示
> される場合があります。このメッセージを見たいのですが、すぐに
> win に戻ってしまいます。
 常に見たいなら、
run $comannd + " > con";
としてウィンドウに取り込めば多くの場合見れると思います。ある時に限定
してというのはおそらく無理です。
 P.S 場合によっては上記の方法は、「動作環境」→「編集」→「高度な編
集」の「プログラム実行で標準エラー出力も出力する」を ON にする必要が
あるかもしれません。

[ ]
RE:02748 ms-dosのメッセージを見たいNo.02809
haru さん 01/12/11 10:25
 
TAKA さん、ENCODINGSHIFTJIS さん、ひろさん、こんにちは。
返事が遅れてすみません。

>違う話題ではないのに、読んでない?ものがあるようでした。
>読んでいたら済みません。
これは私の名誉のためにはっきり言わせていただきます。
これは読んでいます。確かに返事が書いてありません。多分、転送
メール設定を off にしてあったからだと思います。すみません。

 それで経緯を少しお話すると、鶴亀メールで添付ファイルをある
フォルダにコピーするマクロを作っていました。
 それで、そちらで質問したら、dos を使う方法と、田楽 DLL を使
う方法があるとの回答を頂き、前者でやってみることにしました。
 そして、どなたかの方法で実際やってみましたら、何か暴走(ルー
プ)してこれは私の手に負えないということで、私の中では保留に
しました。(多分やり方がまずかったと思いますが。)
 その後、DLL を使って作成中であります。

で、本題なんですが、
>もし、だめなら、具体的にどのような手順で確かめたのか、またど
>うなったのか、などを報告してもらえれば、解決させることが出来
>るかもしれません。
>だめな場合は、「2748」のように具体的に書いてみて下さい。

具体的には、$file $folderに適当なデータをセットして

runsync "command.com /c copy \"" + $file + "\" \"" + $folder + "\"" + " /-y
> con";

としています。

一瞬見えますが、
>リダイレクトを使って、実行結果を秀丸にはりつける。
の方法がわかりません。
よろしくお願いします。

[ ]
RE:02809 ms-dosのメッセージを見たいNo.02810
TAKA さん 01/12/11 11:44
 
TAKA です。

>具体的には、$file $folderに適当なデータをセットして
>
>runsync "command.com /c copy \"" + $file + "\" \"" + $folder + "\"" + " /-y
>> con";
>
>としています。

仕様かどうか分かりませんが、リダイレクトが効くのは「run」だ
けなのではないでしょうか?

こちらは、WindowsXPなので、「cmd.exe」に変更して、以下のマク
ロでは正常にリダイレクトが効きました。
// テストマクロ(ここから)
    $file = "g:\\test.txt";
    $folder = "g:\\wk";
    run "cmd.exe /c copy \"" + $file + "\" \"" + $folder + "\"" + " /-y > con";
// テストマクロ(ここまで)

みなさん、サンプルを書いている訳ですから、サンプル通りで確認
してみて下さい。


>一瞬見えますが、
>>リダイレクトを使って、実行結果を秀丸にはりつける。
>の方法がわかりません。

みなさんが書いたサンプル通りです。
動かない場合は、みなさんが紹介した方法を試してみて下さい。
今のマクロの「runsync」を「run」にしてみて下さい。


また、最初の発言で「pause」とやってだめとありますが、
「02809」には、「pause」は何処にもないようなのですが・・・
「pause」を使ったやり方は、「02748」で書いているのですが、
同じやり方ですか?
「pause」はバッチファイルの中に記述するものなのですが・・・
具体的に「pause」はどのような記述をされたのでしょうか?
「02748」のような書き方で書いて下さい。


何度も言うようですが、みなさんの書いた方法で試してみて下さい。
よろしくお願いします。

[ ]
RE:02810 ms-dosのメッセージを見たいNo.02811
TAKA さん 01/12/11 11:48
 
TAKA です。

>仕様かどうか分かりませんが、リダイレクトが効くのは「run」だ
>けなのではないでしょうか?

秀丸ヘルプの「リダイレクトの応用」には、
>[その他]-[プログラム実行]または、マクロのrun文で、他のプログ
>ラムを実行することができますが、この機能の応用で、標準入出力
>をリダイレクトする機能があります。

としか書いていないので、「run」だけしか、効かないともとれま
すが。

どうなんでしょう? > 秀丸担当さん、ALL

[ ]
RE:02809 ms-dosのメッセージを見たいNo.02812
ひろ さん 01/12/11 12:39
 
 haru さん今日は、ひろです。
>  それで、そちらで質問したら、dos を使う方法と、田楽 DLL を使
> う方法があるとの回答を頂き、前者でやってみることにしました。
 この用途の場合、単純に DOS 窓でやっても上手く逝かないと思います。後
者の方法の方がよいでしょう。

> runsync "command.com /c copy \"" + $file + "\" \"" + $folder + "\"" + " /-y
> > con";
 確認していませんが、秀丸にメッセージを取り込むのではなく、プロンプ
トでそのまま操作することを前提とすれば、
runsync "command.com /c copy \"" + $file + "\" \"" + $folder + "\"" + " /-y";
で上手くいくかもしれません。

 なお標準入出力は、run でないと使えません。→TAKA さん+All

[ ]
RE:02812 ms-dosのメッセージを見たいNo.02813
TAKA さん 01/12/11 12:59
 
TAKA です。

> なお標準入出力は、run でないと使えません。→TAKA さん+All

了解です。
マクロヘルプの方で見つけれました。

>run文は[その他]-[プログラム実行]と同様に標準入出力のリダイレ
>クトが可能です。もし起動するプログラムの標準出力がリダイレク
>トされている場合、run文はrunsync文同様に、待機するようになり
>ます。runsync文とrunsync2文はリダイレクトはできません。

[ ]
RE:02809 ms-dosのメッセージを見たいNo.02814
ENCODINGSHIFTJIS さん 01/12/11 14:00
 
>具体的には、$file $folderに適当なデータをセットして
>runsync "command.com /c copy \"" + $file + "\" \"" + $folder + "\"" + " /-y
> > con";>
>一瞬見えますが、
>>リダイレクトを使って、実行結果を秀丸にはりつける。
>の方法がわかりません。

  /Y        受け側のファイルを上書きするか確認するためのプロンプトを表示しま
            せん.
  /-Y       受け側のファイルを上書きするか確認するためのプロンプトを表示しま
            す.
これはキツいです。 >con を付けると、 /-Y には必ず[EOF]を送ってループ
するようですから。
先にファイルの存在を検査して、マクロで確認対話をしてから、コピーの
ほうが低ストレスです。

サンプルマクロ
( 内部コマンドより普通の.exe のほうがやりやすい、MOVE も同様です)
// Yprompt.mac
gofileend; beginsel;
run "Xcopy /-Y C:\\windows\\temp\\j.txt C:\\windows\\temp\\j >con";

j.txt   j\j.txt   を\temp に作り実行します、
最初は >con 無しで、次は >con 付で。
run のカレントディレクトリはマクロ実行面と同じなので、ファイル指定も
フルパスが望ましいです。

[ ]
RE:02814 ms-dosのメッセージを見たいNo.02815
ENCODINGSHIFTJIS さん 01/12/11 14:11
 
// Yprompt.mac
gofileend; beginsel;left;
run "Xcopy /-Y C:\\windows\\temp\\j.txt C:\\windows\\temp\\j >con <con";
//n

コマンドラインとは異なって、これもできるが、先にNを指定するのは
対話になってないし。  事前にファイル確認でしましょう。

[ ]
RE:02815 ms-dosのメッセージを見たいNo.02816
ENCODINGSHIFTJIS さん 01/12/11 14:30
 
<con で [EOF]になった後、[EOF]送りでなく、コマンド窓開きで
ユーザー入力待ちになるなら対話可能かもしれないが、
>con との絡みもあるし、Win の対話はコマンドラインは似合わない。
簡単に実現できるなら、窓開きも使ってみたいです。

[ ]
RE:02810 ms-dosのメッセージを見たいNo.02818
haru さん 01/12/11 18:20
 
TAKA さん、ENCODINGSHIFTJIS さん、ひろさん、こんにちは。

>みなさんが書いたサンプル通りです。
>動かない場合は、みなさんが紹介した方法を試してみて下さい。
>今のマクロの「runsync」を「run」にしてみて下さい。
runsync を run にしたらメッセージが読めました。メール本文にい
きなりでてきますが。
でも、メエラーッセージがなくなるまで run でテストして、エラー
が消えたら、runsync〜〜〜;の>con なしにすれば良いわけですから
OK です。お騒がせしました。

>また、最初の発言で「pause」とやってだめとありますが、
>「02809」には、「pause」は何処にもないようなのですが・・・
>「pause」を使ったやり方は、「02748」で書いているのですが、
>同じやり方ですか?
>「pause」はバッチファイルの中に記述するものなのですが・・・
>具体的に「pause」はどのような記述をされたのでしょうか?
>「02748」のような書き方で書いて下さい。

[その2]標準出力をリダイレクトする
リダイレクトを使って、実行結果を秀丸にはりつける。
// テストマクロ(ここから)
    $Command = "fc";
    run $Command + " > con";
    endmacro;
// テストマクロ(ここまで)

を参考にしたので、pause は付けませんでした。

因みに 前回の pause の書き方は、ここで御披露するのも、お恥ず
かしい限りで論外なんですがが、お察しの通り、マクロにいきなり
pause です。で、駄目でしたと申し上げた次第です。


>何度も言うようですが、みなさんの書いた方法で試してみて下さい。
>よろしくお願いします。
これはできなければ、ということで良いんですよね。
(実を申しますと、話についていけない所もあり、暴走の危険も有
りで、全部は試したくはないのです。)

みなさん、ありがとうございました。

[ ]
RE:02811 ms-dosのメッセージを見たいNo.02820
秀丸担当 さん 01/12/11 18:57
 
>としか書いていないので、「run」だけしか、効かないともとれま
>すが。
>
>どうなんでしょう? > 秀丸担当さん、ALL

runだけしかリダイレクトは効かない仕様です。

[ ]
RE:02820 ms-dosのメッセージを見たいNo.02821
TAKA さん 01/12/11 19:01
 
TAKA です。

>runだけしかリダイレクトは効かない仕様です。

回答、ありがとうございます。マクロヘルプの方に、その旨の記述
を見つけることが出来ました。

[ ]
RE:02818 ms-dosのメッセージを見たい(winNo.02828
haru さん 01/12/13 09:58
 
いつもお世話様です。

win2000 で

$t_file = "c:\\a.txt";
$folder = "a:\\";

とした上で、
run     "command.com /c copy \"" + $t_file + "\" \"" + $folder + "\"" + " /-
Y > con";
を実行すると、
「スイッチが違います. -  /-」

run     "command.com /c copy \"" + $t_file + "\" \"" + $folder + "\"" + " >
con";
を実行すると、
「パラメータが多すぎます.」

との、メッセージが返ってきます。
win95 ではうまくいったのですが。

よろしくお願いします。

[ ]
RE:02828 ms-dosのメッセージを見たい(winNo.02831
TAKA さん 01/12/13 12:08
 
TAKA です。

>との、メッセージが返ってきます。
>win95 ではうまくいったのですが。

「02810」でも触れましたが、OSによって、コマンドプロンプト
を起動するためのファイル名が違います。
32ビット系OSであるWindows2000やXPでは、「02810」で書いた
とおり「cmd.exe」です。

「command.com」としているところを「cmd.exe」にすれば動きます。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

本来の目的(一番最初の発言)は、コマンドプロンプトを止めたい
と言うことだったと思うので、「02748」で書いた、「その1」の
方法(pauseを使って止める)を使うのが一番だとは思います。
OSの違いは関係ないし。
試したくないということなので、どうしようもありませんが。
#自分としては、出来ないと言われているから、出来る方法を書い
 ているつもりなんですが。

// テストマクロ(ここから)
    $t_file = "c:\\a.txt";
    $folder = "a:\\";
    runsync2 "C:\\TEST.bat \"" + $t_file + "\" \"" + $folder + "\"";
    endmacro;
// テストマクロ(ここまで)

// バッチファイル(C:\TEST.BAT)(ここから)
copy %1 %2 /-Y
pause
// バッチファイル(C:\TEST.BAT)(ここまで)

[ ]
RE:02831 ms-dosのメッセージを見たい(winNo.02845
haru さん 01/12/14 09:56
 
TAKAさん、こんにちは。

>「02810」でも触れましたが、OSによって、コマンドプロンプト
>を起動するためのファイル名が違います。
>32ビット系OSであるWindows2000やXPでは、「02810」で書いた
>とおり「cmd.exe」です。
>
>「command.com」としているところを「cmd.exe」にすれば動きます。
>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

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

[ ]