アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (12件中1~10件)

下のソースをメモ帳にでもコピーして好きな名前で保存して使ってください。

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のコメントアウトは行頭に#をつければ良いです。

分からなかったら、また聞いてください。もう寝ますので、回答は明日以降になると思いますが。
    • good
    • 0

>日付と時間を指定するだけでその名前を新規に


>作成するフォルダ名に反映させたいのですが

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でプログラム組んでもできますが、そんなことするほどのもんじゃないし。
    • good
    • 0

> GNUコマンドのWin32移植版を使うといいと思います。



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

この回答への補足

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

補足日時:2003/05/22 12:14
    • good
    • 0

おはようございます。



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/UnxUti …
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/05/25 15:03

別に間違っちゃいないんだけど、プログラムの10行目


if($count >= $end) {last;}
じゃなくて
if($count == $end) {last;}
でよかった。
    • good
    • 0

>それと、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

この回答への補足

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

補足日時:2003/05/18 22:39
    • good
    • 0

perlでもsedでもどれでもいいから、toubousya決めて。


perlだったら、ここにプログラム書くし(どうせ10行くらいだから)。

この回答への補足

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

補足日時:2003/05/18 21:38
    • good
    • 0

分かった。

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 …
    • good
    • 0

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



参考URL:http://www.vector.co.jp/soft/win95/util/se043908 …
    • good
    • 0

#2に書いたような大げさなことをするのが、嫌なら、perlをインストールして、perlでプログラムを組むってのもいいですね。

Cよりも遥かに簡単に書けますよ。まあ、新たにperlを勉強する時間が必要ですが。ほしい機能を詳しく書いてくれれば、ここでプログラム例を書いてもいいですよ。

この回答への補足

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

補足日時:2003/05/18 20:23
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!