copyについてNo.08983
yamasan さん 01/06/11 16:00
 
こんにちは。yamasanです。

マクロ会議室で教えていただいたマクロを使って、
同一フォルダ(例:"e:\test")内の幾つかのファイルの中を検索・置換後、

結果を一覧して確認するために、DOSプロンプトなどで、
copy "e:\test\*.htm" e:\result.txt
などと、しています。

このままですと、ファイルとファイルの間が連続しています。
ファイル間に空白行を入れるとか、
『空白行+ファイル名』を入れるとかは、出来ないのでしょうか?

それとも、DOSプロンプトでできる事柄なんでしょうか。
grep検索しても、ファイル名がでるだけですし・・・
お教えください。お願いします。

[ ]
RE:08983 copyについてNo.08987
ひろ さん 01/06/11 18:47
 
 yamasan さん今日は、ひろです。
> 結果を一覧して確認するために、DOSプロンプトなどで、
 この事と、
> copy "e:\test\*.htm" e:\result.txt
この事の繋がりがよく分かりません。

 yamasan さんのやりたいことは、*.htm を一つのファイルに纏め、尚且つ
纏められた結果は各々元となるファイルの部分の前に「空白行 (+ファイル名)」
を入れたいだけなのでしょうか? そうならば、以下のマクロで出来ます。
//----------------------- joint file macro -----------------------
disabledraw;
$dir = "e:\\test";//検索するフォルダ
$extension = "*.htm";//検索するファイル
//検索状態保存
#reg_search=searchmode;
$search=searchbuffer;
#search=searchoption;
if(!#reg_search){//検索にヒットした場合は範囲選択
  writeininum "hidemaru.ini","Env","SelectFound",1;
  envchanged;
}

grep ".",$extension,$dir,regular,filelist;
  //サブディレクトリも含むなら、「subdir」を追加
while( code != eof ){
  call GetFileName;
  movetolineno 1,lineno + 1;
  insertfile $$return;
  if( column == 1)insert "\n";
  insert "\n";
}

End://終了処理
  //検索状態を元に戻す
  if(!#reg_search){
    writeininum "hidemaru.ini","Env","SelectFound",#reg_search;
    envchanged;
  }
  setsearch $search, #search;
  endmacro;

GetFileName://file name の取得
  ##topx = x;
  ##topy = y;
  searchdown "\\([0-9]+\\)$",regular;
  delete;//行番号削除
  ##endx = x;
  ##endy = y;
  return gettext(##topx, ##topy, ##endx, ##endy);

[ ]
RE:08987 copyについてNo.08991
yamasan さん 01/06/12 08:46
 
ひろさん、こんにちは。yamasanです。
どうも、申し訳ありませんでした。

 |  yamasan さん今日は、ひろです。
 | > 結果を一覧して確認するために、DOSプロンプトなどで、
 |  この事と、
 | > copy "e:\test\*.htm" e:\result.txt
 | この事の繋がりがよく分かりません。

単に、該当フォルダの
copy 01.txt+02.txt+03.txt+・・・・+99.txt \copy.txt
というような事を書いたつもりだったんです。(>_<)
分かりにくい文で申し訳ありませんでした。
(コピー先のファイル名は、パスを含めて意味が無いものだったのです。)

 |  yamasan さんのやりたいことは、*.htm を一つのファイルに纏め、尚且つ
 | 纏められた結果は各々元となるファイルの部分の前に「空白行 (+ファイル名)」
 | を入れたいだけなのでしょうか? そうならば、以下のマクロで出来ます。

ひろさん の 仰るとおりです。
ひろさん の 作成してくださったマクロで、
思った事が出来ました。有難うございます。いつも、すみません。
それで、追加して 2点ほど お尋ねしたいんです。

このマクロ内の
 | $dir = "e:\\test";//検索するフォルダ

● "e:\\test" を "." に変更すると、
開いているファイルのあるフォルダについて、マクロが実行されますが、
この使い方は、間違っていないですか?

●もう一つは、
ファイル名の前に改行を入れて、
空白行が入るようにしたい場合は、何処に"\\n"を書き加えればいいのすか。

大変、分かりにくい表現しか出来ないので、
申し訳ないのですが、これから徐々に色々と憶えていきますので、
どうぞ、お願いします。

[ ]
RE:08983 copyについてNo.08993
ENCODINGSHIFTJIS さん 01/06/12 11:39
 
>同一フォルダ(例:"e:\test")内の幾つかのファイルの中を検索・置換後、
>結果を一覧して確認するために、DOSプロンプトなどで、

結果の確認ならば、GREPでファイル名一覧してタグジャンプですが
巨大テキストを作らない方向では。
メニュー/検索/Grepの実行/ファイル名{一覧だけ作成・フルパス・・・・}
確認箇所の「候補」がパターンマッチで指定できるのなら、作業は最速です。
元テキストが残っているなら FC.EXE など比較差分を扱うソフトを使えます。

役立たずの COMMAND.COM でも連結くらいは

ループの親
REM FFCAT.BAT ----------------------------------------
REM カレントの .HTM を連結します。内部で FCAT.BAT を呼び出します
LFNFOR ON
CD .
FOR %%F IN (*.HTM) DO CALL FCAT.BAT %%F
hidemaru \temp\copy.txt

ループ本体
REM FCAT.BAT --------------------------------
REM ファイル名を頭に付けて、%1のファイルを連結します
ECHO  _ >> \TEMP\COPY.TXT
ECHO %1 >> \TEMP\COPY.TXT
TYPE %1 >> \TEMP\COPY.TXT
ECHO [EOF]>>\TEMP\COPY.TXT

COMMAND.COM ではすぐ限界に当たりますが、たとえば時刻の記入など
WSH もあるが一般人に向くか ?  いろいろあります。

[ ]
RE:08991 copyについてNo.08994
ひろ さん 01/06/12 12:47
 
 yamasan さん今日は、ひろです。
> ● "e:\\test" を "." に変更すると、
> 開いているファイルのあるフォルダについて、マクロが実行されますが、
> この使い方は、間違っていないですか?
 間違っていません。
 因みに「"」で括らずに directory, directory2 としても同じです。

> ●もう一つは、
> ファイル名の前に改行を入れて、
> 空白行が入るようにしたい場合は、何処に"\\n"を書き加えればいいのすか。
 あらら、
>   if( column == 1)insert "\n";
>   insert "\n";
でその処理を行っているつもりですが、上手くいきませんか?

[ ]
RE:08994 copyについてNo.09003
yamasan さん 01/06/12 16:13
 
ひろさん、こんにちは。お世話になっています。
yamasanです。

 |  間違っていません。
 |  因みに「"」で括らずに directory, directory2 としても同じです。

有難うございます。分かりました。

 | >   if( column == 1)insert "\n";
 | >   insert "\n";
 | でその処理を行っているつもりですが、上手くいきませんか?

if( column == 1)insert "\n\n";
insert "\n\n";

と、書き加えたら、思った結果になりますが、
問題は、ありませんでしょうか。

それとは別に、このようなマクロの内容を理解するには、
プログラミングを勉強せねば、分からないのですか?

Perlが簡単だというのを見聞きして、
以前に何度か挑戦しましたが、挫折してます。(T_T)
Perlの本の中にも 似たような記述が あったような気が・・・。
秀丸から離れますけども、
こちらのほうについても、少しだけ質問させてください。

[ ]
RE:08993 copyについてNo.09004
yamasan さん 01/06/12 16:13
 
こんにちは。お世話になっています。yamasanです。
私としては、余り分かっていないので、
頓珍漢な事を言ってるような気もしますが、お許しください。

 | 結果の確認ならば、GREPでファイル名一覧してタグジャンプですが
 | 巨大テキストを作らない方向では。
 | メニュー/検索/Grepの実行/ファイル名{一覧だけ作成・フルパス・・・・}
 | 確認箇所の「候補」がパターンマッチで指定できるのなら、作業は最速です。

今回は、話の行きがかり上、
カレントディレクトリを e:\test という事にさせて頂きます。

FFCAT.BAT と FCAT.BAT をディレクトリに置き、
実行しましたが、何も起こりません。
思いますに、\temp\copy.txtを使っていますが、

この\temp\copy.txt は、"hidesoft.2:08991| RE 08987 copyについて"で
copy 01.txt+02.txt+03.txt+・・・・+99.txt \copy.txt
とした事に絡んでいるんですか?

でありましたら、この作業が終わった後に、
同じような作業をする事になるんでしょうか。

よく分からないので、失礼があれば、お許しください。
FFCAT.BATなどについて、編集できないもので、こんな事をお聞きしています。

恥のかきついでにもう一つ、お尋ねします。
よく色んな場面で、"%1"を見かけますが、
%1 とは、どういう意味があるんですか?
聞くのは、とても恥ずかしいんですが、お願いできませんでしょうか。

[ ]
RE:09004 copyについてNo.09007
ENCODINGSHIFTJIS さん 01/06/12 17:04
 
示したのは、こちらで動いた実例です、ディレクトリ、出力ファイル名などは
そちらで書き換えます。ということは、.BAT を読めるというのが前提でした。

Winデスクトップ生活でマクロで事がすんでいるなら、.BAT を必要になるまで
勉強することはいりません。それぞれ特徴がありますが

command.com については検索で出ます。単語はMS-DOS .BAT LFNFOR マクロ変数など
http://pcweb.mycom.co.jp/column/msdos027.html
http://www25.cds.ne.jp/~kamiken/bach/b_comand.html

cmd.exe については
Top > Windows 2000 Insider > Windows 2000 コマンドライン徹底活用
http://www.atmarkit.co.jp/fwin2k/operation/command000/index.html
あたり

UNIXの昔から多種のコマンドラインのソフトが作られて、世界を作っている
新作も絶えません。

[ ]
RE:09007 copyについてNo.09009
yamasan さん 01/06/12 17:18
 
yamasanです。どうもありがとうございました。

 | Winデスクトップ生活でマクロで事がすんでいるなら、.BAT を必要になるまで
 | 勉強することはいりません。それぞれ特徴がありますが
 |
 | command.com については検索で出ます。単語はMS-DOS .BAT LFNFOR マクロ変数など
 | http://pcweb.mycom.co.jp/column/msdos027.html
 | http://www25.cds.ne.jp/~kamiken/bach/b_comand.html
 |
 | cmd.exe については
 | Top > Windows 2000 Insider > Windows 2000 コマンドライン徹底活用
 | http://www.atmarkit.co.jp/fwin2k/operation/command000/index.html

勉強させていただきます。
どうもありがとうございました。今後の課題と致します。

[ ]
RE:09003 copyについてNo.09016
ひろ さん 01/06/12 19:24
 
 yamasan さん今日は、ひろです。
> if( column == 1)insert "\n\n";
> insert "\n\n";
>
> と、書き加えたら、思った結果になりますが、
> 問題は、ありませんでしょうか。
 yamasan さんと私が想像した出力結果が違うようですね。問題はありません。

> 秀丸から離れますけども、
 Perl については質問に答えられるほどの技量はありません。どちらにし
ても、秀丸本体とは離れてしまうので、hidesoft.4 へ改めて投稿してくだ
さい。

[ ]
RE:09016 copyについてNo.09032
yamasan さん 01/06/13 09:38
 
yamasanです。ひろさん、おはようございます。

 |  yamasan さんと私が想像した出力結果が違うようですね。問題はありません。

有難うございます。聞いておかないと不安で使えません。

 |  Perl については質問に答えられるほどの技量はありません。どちらにし
 | ても、秀丸本体とは離れてしまうので、hidesoft.4 へ改めて投稿してくだ
 | さい。

いえ、それほど、気になるわけではありません。
聞いても分からないだろうし。(>_<)
Perl云々というより、本を買って持っているのが、
この種類だけという事で・・・。スイマセンでした。
これで、この件は、終わらせていただきます。失礼しました。

[ ]