• ベストアンサー

こういうソフトを探しています

フォルダにあるファイル(5つ程度で それぞれ内容の異なるファイル)を開けることなく、 その中の内容の指定された行数だけ別ファイルに書き 出すようなソフトを知らないでしょうか? 一度Cで作ろうとしたのですが、 締め切りが迫って来た為、 今回はフリーソフトでと思って探しています。 どうかよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • damejan
  • ベストアンサー率30% (58/192)
回答No.8

下のソースをメモ帳にでもコピーして好きな名前で保存して使ってください。Cが分かるようなのでC likeに書いてみました(perl likeに書くともうちょっと省略できるんだけど)。インデント(字下げ)がおかしいようなら、適当にインデントしてください(Cのインデントと同じです)。 ------------------------------------------------ ($start, $end, @files) = @ARGV; foreach $file (@files){ $count = 0; open(IN, $file) || die "$file: ", $!; printf("### %s\n", $file); while($line = <IN>){ $count++; if($start <= $count) {printf("%s", $line);} if($count >= $end) {last;} } close(IN); printf("\n"); } ----------------------------------------------- perl for winのインストール/設定は、自分でやってね(winマシンがないからアドバイスできなし)。 使い方は、#7の最終行そのものです。入力ファイル指定には、複数ファイルを指定できます(もちろんワイルドカードで指定もできます)。 プログラムでは、入力ファイル名も出力するようになっていますが、不要だったら、6行目のprintfをコメントアウトしてください。また、それぞれのファイルの処理結果の間にスペースが入るようになっていますが、それも不要でしたら、13行目のprintfもコメントアウトしてください。※perlのコメントアウトは行頭に#をつければ良いです。 分からなかったら、また聞いてください。もう寝ますので、回答は明日以降になると思いますが。

その他の回答 (11)

  • damejan
  • ベストアンサー率30% (58/192)
回答No.12

>日付と時間を指定するだけでその名前を新規に >作成するフォルダ名に反映させたいのですが No.10さんが教えてくれたGNUコマンドのWin32移植版を使えば、簡単です(No.10さんにもお礼しましょう)。 GNUコマンドのsh.exeを使います。 name=`date +'%Y%m%e_%H%M%S'` mkdir $name とメモ帳などで書いて、例えば、date_folder.shなどと名前をつけて保存します(この例では、フォルダ名に秒まで入ります)。 コマンドプロンプトから、 sh.exe date_folder.sh を実行するとお望みのことができます。実際にWinでやったわけじゃありません。Linux上ではできます。もっとも、Unix系では、次のような感じでコマンドから直接打ってもできます。 mkdir `date +'%Y%m%e_%H%M%S'` もちろん、perlでプログラム組んでもできますが、そんなことするほどのもんじゃないし。

  • damejan
  • ベストアンサー率30% (58/192)
回答No.11

> GNUコマンドのWin32移植版を使うといいと思います。 これいいね。CygwinかマイクロソフトのServices for UNIXしか知りませんでした。これは、Cygwinみたいに皮をかぶせる必要がなく、Winネイティブだから楽ちんね。sedもあるし、toubousyaさんのやりたいこともすぐですね。

toubousya
質問者

補足

本当に有難うございました。 いろいろ使ってみて自分に良かったのを 使わせていただきたいと思います。 damejanさん、新たに質問していですか? 日付と時間を指定するだけでその名前を 新規に作成するフォルダ名に反映させたいのですが そんなことは出来るでしょうか? 例えば、2003年5月21日、13時30分というのであれば、 フォルダ名に 20030521_1330 というような フォルダ名にしたいのですが…。

  • Silent-G
  • ベストアンサー率15% (2/13)
回答No.10

おはようございます。 GNUコマンドのWin32移植版を使うといいと思います。 プログラムを組まなくていいしインストールも簡単で 後々応用が利くのでオススメですよ。 参考URLから"UnxUtils.zip"をダウンロードして適当なところに解凍し、 "usr\local\wbin"にPathを通します。 たとえば、"C:\UnxUtils"に解凍した場合、"C:\UnxUtils\usr\local\wbin"に Pathを通します。 そして、コマンドプロンプトから C:\>C:\UnxUtils\usr\local\wbin\find . -maxdepth 1 -name *.txt -exec head -n5 {} ; とすれば"c:\"の"*.txt"ファイルの先頭5行を出力してくれます。 "."の部分を実行したいフォルダー名にするか、実行Pathを移動すれば 任意の場所のファイルで実行できます。 あとは、ファイルにリダイレクトするだけです。 (コマンドの詳細はgoogleなどで調べてみてくださいね) 注意1:上記コマンドで"C:\UnxUtils\usr\local\wbin\find"としているのはDOSのFINDコマンドを使用しないためです。 注意2:上記コマンドの最後の部分ですが、"}"と";"の間に空白を必ず入れてください。 では。

参考URL:
http://www.weihenstephan.de/~syring/win32/UnxUtils.html
toubousya
質問者

お礼

有難うございました。 Unixは前から興味を持っていて いつかは使ってみたいと思っていたので、 勉強も兼ねて使ってみたいと思います。 いろいろと有難うございました。

  • damejan
  • ベストアンサー率30% (58/192)
回答No.9

別に間違っちゃいないんだけど、プログラムの10行目 if($count >= $end) {last;} じゃなくて if($count == $end) {last;} でよかった。

  • damejan
  • ベストアンサー率30% (58/192)
回答No.7

>それと、sedって2000とかXPでもOKなの? NTがいけるから、大丈夫じゃない。手元にWinマシンがないから分かんないけど。 toubousyaさんのやりたいことの確認です。 (1)複数のファイルに対して、出力ファイルは1つだけですか? file1.txt, file2.txt, file3.txt, ... の結果が、それぞれ、out1.txt, out2.txt, out3.txt, ... に出力されるという感じ? それとも (2)それぞれのファイルに対して、1つずつ出力ファイルが必要ですか? file1.txt, file2.txt, file3.txt, ... の結果が全てoutall.txtに出力されるという感じ? 一応、perlスクリプトはもうできていて、こんな感じで使えます。file1.txtの3行目から5行目までを表示する場合、 perl GetLines.pl 3 5 file1.txt この出力をout1.txtに書き込む場合 perl GetLines.pl 3 5 file1.txt > out1.txt

toubousya
質問者

補足

(1)複数ファイルに対して、出力ファイルは1つだけです。 お願いします。

  • damejan
  • ベストアンサー率30% (58/192)
回答No.6

perlでもsedでもどれでもいいから、toubousya決めて。 perlだったら、ここにプログラム書くし(どうせ10行くらいだから)。

toubousya
質問者

補足

ddamejanさん、 今後の勉強のためにもPerlのプログラム お願いします。 それと、sedって2000とかXPでもOKなの?

  • damejan
  • ベストアンサー率30% (58/192)
回答No.5

分かった。Services for UNIXとかPerlじゃなくて、sedにしよう。sedなら物凄く簡単。toubousyaさんがやりたいことに対してプログラムの必要なし。 例えば、file1.txtの5行目から13行目まで出力したいときには、 sed -n 5,13p file1.txt とコマンドプロンプトから打ち込むだけでいいから。 sedにしよう、やっぱり。

参考URL:
http://www.vector.co.jp/soft/win95/util/se015016.html?s
  • damejan
  • ベストアンサー率30% (58/192)
回答No.4

perlだったら、下記URLからダウンロードしてね。

参考URL:
http://www.vector.co.jp/soft/win95/util/se043908.html?s
  • damejan
  • ベストアンサー率30% (58/192)
回答No.3

#2に書いたような大げさなことをするのが、嫌なら、perlをインストールして、perlでプログラムを組むってのもいいですね。Cよりも遥かに簡単に書けますよ。まあ、新たにperlを勉強する時間が必要ですが。ほしい機能を詳しく書いてくれれば、ここでプログラム例を書いてもいいですよ。

toubousya
質問者

補足

プログラム書いてほしいです。 Perlも少し考えたのですが、 実力がなくて・・・。 ほしい機能って質問の通りなんですが、 それだけでは無理でしょうか?

  • damejan
  • ベストアンサー率30% (58/192)
回答No.2

Unix系のコマンドなら簡単にできます。 例えば、file1.txtの先頭20行を表示するならば、 head -20 file1.txt と打ち込めばOKです。outfile.txtに出力するならば、 head -20 file1.txt > outfile.txt です。 残念ながら、こういったUnix系のコマンドラインツールはwindowsにはありません。 では、これをwindows上でやるには、下記のURLからservices for UNIXの評価版をダウンロードして、インストールしてください。コマンドの使い方はその後でということで。インストールするときに、色んなサーバのインストールをどうするか設定するかと思いますが、今回は全くサーバ関連は入れなくていいです。

参考URL:
http://www.microsoft.com/japan/windows/sfu/

関連するQ&A

  • ファイル名変換のソフトを教えてください

    お世話になります 単にフォルダ-指定して、連番をつける ファイル名変換ソフトを使用しています 下記のような、ファイル名変換のフリーソフトを ご存知でしたら、よろしくお願い致します ・変換する対象ファイル名を有る程度、条件指定できる または ・拡張子別に(異なる)連番をつれられる   .TXT  なら A001---   .DOC  なら B001--- .XLS  なら C001--- ベクターで検索したのですが、詳細機能までは わかりませんでした よろしくお願い致します

  • 2つのフォルダ内を比較するフリーソフト

    ●XP以降のwindowsで、2つのフォルダを指定すると、その中のファイルを比較し、片方にあるもの、ないものを色かなんかで表示するユーティリティフリーソフトはありますか? ●また、1つのフォルダを指定すると、その中のファイル(できれば下位のフォルダ内も)をtext形式のファイルとして保存できるユーティリティフリーソフトはありますか? よろしくお願いします。

  • フリーの検索ソフトで

    検索ソフトで、フォルダ指定をして その中のテキストファイル内文字も検索できるソフトを探しています。 環境はWindows2000です。 ご使用のフリーの検索ソフトで上記のような内容のものご存じの方など書き込みいただけたらと思います。 よろしくお願いします。

  • 無作為に選択してくれるフリーソフトって無いですか?

    指定したフォルダから、指定した個数のファイルを無作為に選択してくれる もしくは、無作為に選択して指定した別のファイルに移動してくれるフリーソフトって無いですか? OSはXPです。宜しくお願いします。

  • フォルダの中から画像を検索してくれるフリーソフト

    フォルダの中から画像を検索してくれるフリーソフト パソコンのフォルダの中にたくさんの画像ファイルがあるのですが、 その画像ファイルの中からある程度の条件で検索が可能なソフトなどはありませんか? 検索したい項目 ・画像の大きさ ・指定した色調に近い画像など それ以外に画像検索に便利な機能があるとうれしいです。

  • ファイル管理ソフトを探しております。

    こんばんは、はじめまして。 PCの勉強の為にこのサイトを参照させて頂いてます。 今回、私は以下条件のようなソフトを探しており、 このようなものが存在するのかすらも確認できておりません。 ご存知の方、教えて頂きたく思います。 ・ファイル管理ソフトで ・その日アクセスしたファイルを指定したフォルダ内に  コピーが作成される。  (ある日、AとBとCというファイルにアクセスしたら、ある既  定のフォルダにAとBとCのコピー又はショートカットが作成  される。次の日にはまた別のフォルダが作成され、そこに  次の日にアクセスしたファイルのコピーが置かれる) ・アクセス頻度の高いファイルを確認する事ができる。 以上、どうでしょうか? 私自身で探してみましたが、中々見つける事ができません…。 お力貸して頂けたら幸いです。 お願い致します。

  • スライドショウのソフトを探しています

    Windows7のマシンを利用しています そのマシンでjpgのデジカメ画像のスライドショウを考えています そのjpgの画像ソフトは、複数のフォルダー(30フォルダー程度)にあり なおかつ、その中のjpgファイル名が同じものもあります そこで、スライドショウソフトの方でフォルダを指定することによりその中 にあるjpgのファイルを全てスライドショウができないかと考えています そのようなソフトをご存知ないでしょうか? また、ない場合は、スライドショウのソフトにjpg画像を指定する時に ファイル名が重複しないで別のファイル名に自動変更できるソフト等 ないでしょうか よろしくお願いします。

  • フォルダではなくファイルがバックアップ出来るソフト

    バックアップができるフリーソフトはたくさん有ると思います。 一般的には、バックアップするフォルダを指定して、 フォルダを丸ごとバックアップするやり方だと思います。 しかし、フォルダを丸ごとバックアップする方法だと不要なファイルも バックアップすることになり、無駄が多いと思います。 そこで、フォルダではなく必要なファイルをひとつひとつ指定して、 バックアップできるフリーソフトを紹介ください。 ここを見ればたくさん有るよといった回答ではなく、 具体的なソフト名を教えていただけたらうれしいです。

  • フォルダのCOPYできるフリーソフト

    ファイルの入っている複数のフォルダを指定して、ファイルを含まずにそれらのフォルダを別の場所にCOPYしたいのですがいいフリーソフトはありますか。 たとえばエクスプローラのフォルダ表示において、左側に表示されるフォルダを選択した場合で、右側に表示される複数のフォルダ(ファイルや2階層めフォルダあり)の表示されているフォルダ名のみ、すなわち1階層めのフォルダ名のみを別の場所にCOPYしたいのです。 いろいろ探したのですが、ほとんどのソフトが全階層のみのフォルダCOPYになってしまうため、1階層でもできるものをさがしています。 よろしくお願いします。 WindowsXP

  • USBメモリーにソフトとデーターを保存する方法

    USBメモリーに、ソフトとデーターを保存しどのパソコンでも使えるようにしたいのです。 ソフトはUSBメモリーにインストールでき、動きます。 ソフトにはデーターの保存先を指定するオプションがあり、 通常は「Cドライブの中のプログラムファイルの中の○○フォルダー」という感じで、 指定すると思うのですが、「直接exeファイルがあるフォルダーと同じフォルダー」と言う指定が出来たら、 USBメモリーだけでどのパソコンでも同じ環境が構築できると思いました。 実は心臓病を患っており、外出先で「携帯心電図計」のデーターを取り込み及び確認したり、 CDに焼いて、主治医にワンタッチで見ていただけたらと思い考えました。 つまり 「Cドライブの中のプログラムファイルの中の○○フォルダー」という指定の仕方を 「プラグラム(exe)と同じフォルダー内の○○フォルダー」と指定をする方法が、知りたいのです。 よろしくお願いします。

専門家に質問してみよう