00004 98/02/06 01:35 同内容のログファイルを作るには
投稿者 : 鈴木達也   コメントを投稿する

鈴木達也と申します。

パソコン通信のホストへの一回のアクセスで、同一内容のログファイルを二つ作る方
法がありませんでしょうか。

run,runsync,runsync2で、MS-DOSのcopyコマンドを使うのがもっとも簡単なような気
がするのですが、

run "copy a.txt b.txt"

のようにしても、

runコマンドで指定したファイルの実行に失敗しました

と怒られてしまいます。

秀termの終了後にバッチファイルなどで処理すれば良いのでしょうが、コンピュータ
の素人にも使わせなくてはいけないものなので、なるべく、秀termのスクリプト内部
で処理したいのです。

よろしくお願いいたします。


00005 98/02/06 08:41 RE:00004 同内容のログファイルを作るに
投稿者 : 横島 忠夫   コメントを投稿する

こんにちは, 鈴木達也さん.

>パソコン通信のホストへの一回のアクセスで、同一内容のログファイルを二つ作る方
>法がありませんでしょうか。
>
>run,runsync,runsync2で、MS-DOSのcopyコマンドを使うのがもっとも簡単なような気
>がするのですが、
>
>run "copy a.txt b.txt"
>
>のようにしても、
>
>runコマンドで指定したファイルの実行に失敗しました
>
>と怒られてしまいます。

まず, スクリプトの先頭の方に
以下の一行を追加します.

         afterhangup Atoshimatsu  ;電話を切った後の処理

そして Atoshimatsu には以下のようなことを書いておきます


Atoshimatsu:
          chdir log                      ;ログのホルダーに移動
          if(existfile("b.txt"))
                     delfile "b.txt"    ;b.txtが存在していれば削除する
          endif
          copyfile "a.txt", "b.txt"      ;a.txtのコピー
          restoredir
          return


これでOKだと思いますが....

よこしま


00006 98/02/06 12:10 (発言者削除)
投稿者 : 鈴木達也



00007 98/02/06 12:22 RE:00005 同内容のログファイルを作るに
投稿者 : 鈴木達也   コメントを投稿する

鈴木達也です。

横島さん、早速のレスありがとうございました。
ご指摘の方法で試してみたところうまく行きました。

ところが、スクリプトを検討してみると、二つのログファイルを結合する必要が出て
きました。具体的には、データの取得期間が月をまたぐ場合、先月分(例 9801.lo
g)の後ろに今月分(9802.log)を追加したいのです。

秀termのコマンドには、こういったものはありませんでしたよね・・・

そこで、いろいろと試してみたのですが、runコマンド群の後ろにMS-DOSのバッチフ
ァイルを指定すると、何とか動作しました。

例 runsync2 "filecopy.bat"

filecopy.batの内容
  copy a.txt+b.txt c.txt

しかし、ファイルがひとつ増えてしまうのと、バッチファイルの安定性に少々不安が
あります。comwin32といったwindowsネイティブのソフトも試してみましたがあまり
うまく行きません。

そもそも、秀termのrunコマンド群からは、command.comの内部コマンドは直接指定で
きないのでしょうか。そういった仕様なのでしょうか。

また、ここの会議室の趣旨からは外れるかもしれませんが、MS-DOSのコマンドライン
でファイルのコピーができる外部コマンドをご存じないでしょうか。

よろしくお願いいたします。


00008 98/02/06 14:23 openfile,readfile時の終了コードについて
投稿者 : さいとう   コメントを投稿する

スクリプト内でテキストファイルからデータを読みとりたいのですが
終了コードはどのように取り扱えば良いのでしょうか?
どこかの変数に保存されているのでしょうか?
もし、そうならばその変数名を教えて下さい。


00009 98/02/06 16:30 RE:00007 同内容のログファイルを作るに
投稿者 : EMiCC   コメントを投稿する


はじめまして、EMiCCと申します。

>きました。具体的には、データの取得期間が月をまたぐ場合、先月分(例 9801.lo
>g)の後ろに今月分(9802.log)を追加したいのです。

>また、ここの会議室の趣旨からは外れるかもしれませんが、MS-DOSのコマンドライン
>でファイルのコピーができる外部コマンドをご存じないでしょうか。

type 9802.log >> 9801.log
とやれば、9801.log = 9801.log + 9802.log ということになるはずです。


00010 98/02/06 18:13 (発言者削除)
投稿者 : 横島 忠夫



00011 98/02/06 18:16 RE:00007 同内容のログファイルを作るに
投稿者 : 横島 忠夫   コメントを投稿する

こんにちは, 鈴木達也さん.


>ところが、スクリプトを検討してみると、二つのログファイルを結合する必要が出て
>きました。具体的には、データの取得期間が月をまたぐ場合、先月分(例 9801.lo
>g)の後ろに今月分(9802.log)を追加したいのです。
>
>秀termのコマンドには、こういったものはありませんでしたよね・・・


秀Termのスクリプトを拡張してくれるアプリがあります.
「秀まるおのマクロサーバ」というのがそれです.

まず, これを「秀まるおのホームページ」からとってきて,
macserv.exe を hideterm.exe と同じ場所において下さい.

で以下のようにスクリプトを書けばいいです.

;ここから

        #Logpath == "c:\hideterm\log"     ;<-ログのパス, 自分用に直す

        #file1 == #logpath + "\9801.log"
        #file2 == #logpath + "\9802.log"

        ddeinitiate "HideMacroServer", "FileService" ;  <-DDE開始
        if(no)
                run "macserv.exe"
                ddeinitiate "HideMacroServer", "FileService"
        endif

        ddeexecute "appendcopy " + #file1 + " " + #file2 ; <-ファイルの連結
        return

;       ddeexecute "exit"      ;<-マクロサーバを終了する場合に必要

;ここまで


マクロサーバは起動しっぱなししておけば, いつでも使えるので
exitはしない方がいいかもしれません. 大してメモリを使うわけでも
ないので....

よこしま


00012 98/02/06 18:33 RE:00008 openfile,readfile時の終了コー
投稿者 : 横島 忠夫   コメントを投稿する

こんにちは, さいとうさん.

>スクリプト内でテキストファイルからデータを読みとりたいのですが
>終了コードはどのように取り扱えば良いのでしょうか?
>どこかの変数に保存されているのでしょうか?
>もし、そうならばその変数名を教えて下さい。

ファイルのオープンの仕方の例です.


;ここから

       #file == "test.txt"
       #holder == "c:\MyDocument"  ;<-test.txtの場所, 自分用に直す

       chdir #holder
       openfile #file   ;<-ホルダーに移動してオープン
       if(no)
             restoredir
             return       ;<-ファイルがなければカレントディレクトリを元に戻して止める
       endif
       restoredir

       ##i == 1

       beginloop
              readfile #file, #line[##i]    ;<-一行ずつ読む
              if(no) breakloop
              ##i = ##i + 1
       endloop

       ##last == ##i - 1

       closefile #file

;ここまで

これで #line[1], ....., #line[##last]
に各行の内容が格納されます.


よこしま


新規に投稿する