同内容のログファイルを作るにはNo.00004
鈴木達也 さん 98/02/06 01:35
 
鈴木達也と申します。

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

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

run "copy a.txt b.txt"

のようにしても、

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

と怒られてしまいます。

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

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

[ ]
RE:00004 同内容のログファイルを作るにNo.00005
横島 忠夫 さん 98/02/06 08:41
 
こんにちは, 鈴木達也さん.

>パソコン通信のホストへの一回のアクセスで、同一内容のログファイルを二つ作る方
>法がありませんでしょうか。
>
>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だと思いますが....

よこしま


[ ]
RE:00005 同内容のログファイルを作るにNo.00007
鈴木達也 さん 98/02/06 12:22
 
鈴木達也です。

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

ところが、スクリプトを検討してみると、二つのログファイルを結合する必要が出て
きました。具体的には、データの取得期間が月をまたぐ場合、先月分(例 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のコマンドライン
でファイルのコピーができる外部コマンドをご存じないでしょうか。

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

[ ]
RE:00007 同内容のログファイルを作るにNo.00009
EMiCC さん 98/02/06 16:30
 

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

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

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

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


[ ]
RE:00007 同内容のログファイルを作るにNo.00011
横島 忠夫 さん 98/02/06 18:16
 
こんにちは, 鈴木達也さん.


>ところが、スクリプトを検討してみると、二つのログファイルを結合する必要が出て
>きました。具体的には、データの取得期間が月をまたぐ場合、先月分(例 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はしない方がいいかもしれません. 大してメモリを使うわけでも
ないので....

よこしま


[ ]
RE:00011 同内容のログファイルを作るにNo.00013
バフィー さん 98/02/08 22:32
 
>>秀termのコマンドには、こういったものはありませんでしたよね・・・

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

わざわざ、マクロサーバを使わなくても(^^;


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

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

appendfile #file1
if(no)
;ファイル1が存在しない時の処理
endif

openfile #file2
;ファイル2が存在しない時の処理
endif

beginloop
readfile #file2, #line
if(no) breakloop
writefile #file1, #line
endloop

closefile #file1
closefile #file2


で、いいんじゃないですか?

                         バフィー

[ ]
RE:00013 同内容のログファイルを作るNo.00014
横島 忠夫 さん 98/02/08 23:50
 
こんにちは、 バフィーさん。

> >秀Termのスクリプトを拡張してくれるアプリがあります.
> >「秀まるおのマクロサーバ」というのがそれです.
>
> わざわざ、マクロサーバを使わなくても(^^;

NT環境だったら readfile, writefileでも
いいんですが, 95環境ではもの凄く遅いです.

試しに200キロバイトぐらいのファイルで
やってみて下さい.

appendcopyを実行するのに
5分ぐらいかかるとおもいますよ.

1メガ越えたら事実上使いものになりません.

よこしま


[ ]
RE:00014 同内容のログファイルを作るNo.00015
鈴木達也 さん 98/02/08 23:59
 
鈴木達也です。

DDEという文字が出てくると、「難しそう…」と拒否反応が出てしまう私です。
でも、他にあまりいい解決方法はないようですね。

急に仕事が忙しくなってすぐにはできそうにありませんが、マクロサーバなるものを
使った方法を近日中に試してみたいと思います。

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

[ ]
RE:00014 同内容のログファイルを作るNo.00017
バフィー さん 98/02/09 18:10
 
こんばんわ、よこしまさん。

>NT環境だったら readfile, writefileでも
>いいんですが, 95環境ではもの凄く遅いです.

そうでしたか。95は入れてないので試せないのですが、
今後は心得ておきます。他にも95で遅いものはありますか?

95とNTってそんなに違うんですねぇ     バフィー

[ ]
RE:00017 同内容のログファイルを作るNo.00018
横島 忠夫 さん 98/02/10 21:01
 
こんにちは, バフィーさん.


>今後は心得ておきます。他にも95で遅いものはありますか?

他は95とNTで差があると思ったことは
あんまりないんですが, 逆にNTだと変な動きをしたり
することもありますよね.

run "c:\winhlp32.exe c:\myholder\myhlp.hlp"

とかってやってヘルプを開くといつまでも
砂時計消えなかったりします.

95ではそんなことはないです.

ま, これは Delphiのアプリで同じことやっても
砂時計消えないので, 秀termのせいじゃないですけど...

ヘルプ開くには, NTではなんとかってAPI(<-忘れた)でちゃんと
開かないといけないみたいです.

まあ, スクリプトに600キロもあるヘルプを
付けるのは日本中で僕くらいではないかと思いますが....


ちゅうわけで, スクリプトにヘルプを付けるときは
NTだと, 秀Termからはあんまりちゃんとは開かないです.



それから NTだと

run "c:\winhelp.exe c:\myholder\myhlp.hlp"

とかってやると「開けません」って怒られます.
95だと, winhelp.exe っていうのは 32/16bit両方の
ヘルプが開けるんだけど,

NTでは winhelp.exe と winhlp32.exe は
完全に役割分担されてしまっているんですよね.


ま, 秀Termとはあまり関係ない話になってしまいましたが...


[ ]
RE:00007 同内容のログファイルを作るにNo.00023
さん 98/03/01 03:45
 
こんにちは。
最近秀ネットに入会しました。
ちょっと遅めのレスですが、、

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

 これは、「Windowsの[スタートボタン]→[ファイル名を指定して実行]で実行でき
ない物は秀Termスクリプトのrunでも実行できない」のだと思っています。

 試しにファイル名を指定して実行で、copyやtype等のcommand.com内部コマンドを
実行してみて下さい。エラーになるはずです。

 でも、そこで[command.com 内部コマンド名 引数...]と指定してやればエラーにな
りません。

 従って、スクリプトで、run "command.com /c copy a.txt b.txt" などと指定すれ
ばできるはずです(/c をつけると実行後DOS窓は閉じます)。command.comのスイッチ
等についてはcommand.com /? で見て下さい。

 私は秀丸の方で、指定のディレクトリが存在しない場合作成するという動作をマク
ロでしようとしたのですが、runsync2 "md " + $foo_folder; などとしてエラーだっ
たので、runsync2 "command.com /c md " + $foo_folder; としたらあっさり行けま
した。秀Termでは試していませんが多分同じでしょう。

 あと気をつけることは、command.com実行時にエクスプローラでアクティブになっ
ているフォルダがカレントディレクトリになるので、スクリプト実行時にカレントフ
ォルダがいつも固定されているか分からないときは、パスを意識して必要ならば引数
をフルパスで書くということでしょうか。

 内部コマンドを使いたいだけならば、スクリプトの機能を応用しなくても、DDEと
か使わなくても、上の方法でできると思います。これはスクリプトとかに限ったこと
でなくWindows95全般に言えることだと思いますが。。

 結構ツリーが大きくなってたのに、このことに触れている人がいなかったのでしゃ
しゃり出てみました。

[ ]
RE:00023 同内容のログファイルを作るNo.00024
さん 98/03/01 04:16
 
すみません、訂正です。

> でも、そこで[command.com 内部コマンド名 引数...]と指定してやればエラーにな
>りません。

 スクリプトではエラーになりませんが、command.comにおこられます。内部コマン
ドを使う場合は、/cか/kのスイッチをつけてから指定しないといけないようです。
 あと、秀丸でやって秀Termで試してないと書きましたが、さっき試したら秀丸と同
じでした。

 あと、追加

 ヘルプファイルを開くのにwinhelp.exeが95とNTで違うから困るという発言があり
ましたが、run "start ****.hlp" 等で行けました。95しか使ったことがないから分
かりませんが、NTにもstart.exeがあればできるはずです。なかったらごめんなさい。
 [ファイル名を指定して実行]で、.hlp等のデータファイルを直接指定して開けたの
でいけると思ってやったのですが、スクリプトではダメでした。で、startでやって
みたらOKでした。


 startコマンドで他の使い方も発見しました。run "start http://www.yahoo.co.jp
" とスクリプトに書くと、YAHOO!のサイトがブラウザで開きます。 run "mailto:fu
mi@aaa.letter.co.jp" と書くと、通常使うメーラで私宛のメール作成画面が開きま
す。
 私はIE4.0を入れていますが、3.0の場合やIEを入れていない場合はできるか分かり
ませんが。。。

 command.comとstart.exeを使えばWindowsで実行できることは秀丸や秀Termのスク
リプトでもほとんど実行できるので、結構使えると思います。。。レジストリの取
得・変更等もできるし。バッチファイル代わりにするとか(笑)

[ ]
RE:00024 同内容のログファイルを作るNo.00025
さん 98/03/01 04:20
 
すいません、また修正です。

>" とスクリプトに書くと、YAHOO!のサイトがブラウザで開きます。 run "mailto:fu
>mi@aaa.letter.co.jp" と書くと、通常使うメーラで私宛のメール作成画面が開きま
>す。

run "start mailto:xxxx@aaa.letter.co.jp" の間違いです。

[ ]