こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

テキストファイルを、ファイル名を文章に組み込みながら結合する方法

大量のテキストファイルを結合する必要に迫られています。

単純に結合するだけなら、そういった用途のソフトは多くありますので問題はありません。
しかし今回、テキストファイルのファイル名を、そのテキストファイル内の文章の先頭に入れ、その上でテキストファイルを結合する必要が出てきました。
ファイル名に法則性が無く、なおかつファイル名そのものがそのテキストファイルの内容を意味するものとなっており、どうしても上で書いたような処理が求められるのです。

また、出来ればフォルダごとドロップすることでフォルダ内のテキストファイルを上に書いたような処理をしたうえで結合し、その結合された新しいテキストファイルの名前に、フォルダの名前を付けてくれるソフトであれば、なおありがたいです。

模式図で示すと以下のようになります。

フォルダ「A」
 ┣ファイル「ファイル01」
 ┃   文章「文文文文文文文」
 ┣ファイル「ファイル02」
     文章「文文文文文文文」

この状態で、フォルダAをドロップすることで、
ファイル名「A」のテキストファイルが出来、
その中身が、

>ファイル01
>文文文文文文文
>
>ファイル02
>文文文文文文文

となるソフトです。


このような機能を持ったテキスト結合ソフトがございましたらご教授下さい。
もしなければ、上記の機能を実現する方法が他にあるかお教え頂ければ幸いです。
どうぞよろしくお願いします。

投稿日時 - 2009-01-19 20:37:39

QNo.4643900

困ってます

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

下のスクリプトを、HSPという無料のインタプリタ言語でEXE化することで、フォルダをEXEファイル上にドロップして希望のようなテキストファイルを出力できるようになります。HSPはここから(http://hsp.tv/)ダウンロードできます。


//以下HSPスクリプト
#packopt hide 1
#module
#uselib "user32"
#func CharLowerA "CharLowerA" var
#defcfunc foldercheck str p1
mref ref,65 : s5=p1 : CharLowerA s5 : dirlist s2,"*.*",5 : CharLowerA s2 : notesel s2 : s4=0 : repeat notemax : noteget s3,cnt : if s3=s5{s4=1 : break } loop : ref=dir_cur+"\\"+p1 : noteunsel : return s4
#global
dir_main=dir_cur : filename=dir_cmdline : if filename=""{dialog "結合するフォルダをドロップしてください":end} : repeat : lines=instr(filename,c,":") : if lines!-1{c+lines+1 : filelen+}else{break}loop : if filelen!1{dialog "複数のファイルをドロップしています。",1,"警告":end} : chdir getpath(filename,32) : if foldercheck(getpath(filename,8))=0{dialog "フォルダ以外のファイルをドロップしています。",1,"警告":end}sdim list : sdim s1 : sdim memory : chdir filename : dirlist list, "*.txt", 1 : notesel list : ok=0 : repeat notemax : noteget s1,cnt : if strmid(s1,-1, 4)=".txt"{ok=1}loop : if ok=0{dialog "テキストファイル(*.txt)がフォルダに存在しません",1,"Error" : end 0}sdim savedata,64 : repeat notemax : noteget s1,cnt : savedata+=getpath(s1,1)+"\n" :notesel memory : noteload s1 : savedata+memory+"\n\n" :noteunsel : loop : chdir dir_main : if foldercheck("text")=0{mkdir "text"}wait 0 : chdir "text" : notesel savedata : exist getpath(filename,8)+".txt" : if strsize!-1{dialog "\""+getpath(filename,8)+".txt"+"\"\n同じ名前のファイルが存在します。上書きしますか?",3,"確認"}if stat=7{end}notesave getpath(filename,8)+".txt" : dialog "\""+dir_cur+"\\"+getpath(filename,8)+".txt\"\nに出力しました。":end

参考URL:http://hsp.tv/

投稿日時 - 2009-01-21 17:19:52

ANo.1

恐らくwindows環境だと想定して、
cygwinというツールをインストールすればできます。
上記の例ですとcygwinのシェルから

$ for i in `find フォルダ「A」 -type f`; do echo $i; cat $i; done >foo

てな感じにやってやると、フォルダ「A」配下のすべてのファイルを
上記フォーマットでfooというファイルに出力します。
Mac, Linuxであれば標準の環境で上記操作が可能です。

参考URL:http://www.cygwin.com/

投稿日時 - 2009-01-20 19:01:26

あなたにオススメの質問