![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
はじめまして。配列とか変数でFORでループさせれ
ばいいのかなと思うのですが変数の取り扱いがわ
かりません。あるフォルダに拡張子なしの . の
後連番のテキストファイルがあります(SGML出力)。
その連番順にテキストを結合したファイルを作成
したい。
条件として"a086.xxx"のファイルについて処理し
たいです。よろしくお願いします。
ファイル名 中身
a084.000 .............
a085.000 .............
a086.000 abc.......xxx
a086.001 123.......xxx
・
・
a086.036 xyz.......xxx
a087.000 .............
結合したファイルの中身
abc.......xxx
123.......xxx
・
・
・
xyz.......xxx
フォルダの中のそのファイルの個数はその都度
違います。
下記のように処理したいファイル名は抽出して
みたのですがその後どうすればいいのかわかり
ません。また、ファイル名を抽出しないでその
まま処理するものでしょうか。
opendir ( DIR , "a:\\S603000" ) or die;
while($dir = readdir (DIR) ){
if ( $dir =~ /a086/ ){
print "$dir\n";
}
}
closedir ( DIR );
No.3ベストアンサー
- 回答日時:
kinokoyasan2004さんのはいざファイルを開くとき、
open(IN,"$dir");
とやってしまっています。
これでは、Perlスクリプトが動いてるディレクトリに目的のファイルがないと意味がありません。
というわけで、
$indir = 'A:/S603000'; #探しに行くディレクトリ
$outdir = './output.dat'; #書き出すファイル
open(OUT,"> $outdir") or die $!;
opendir(DIR, $indir) or die $!;
while ($list = readdir(DIR)) {
if(-f "$indir/$list" && $list =~ /^a086\.[^\.]+$/i){
open(IN, "< $indir/$list") or die $!;
while (<IN>){print OUT;}
close(IN);
print OUT "\n";
}
}
closedir(DIR);
close(OUT);
回答ありがとうございます。
欲しいテキストファイルが出来ました。
これで、一回の処理でエクセル利用出来ます。
kinokoyasan2004さんのコードの説明も
ありがとうございます。
読込み書出しのとこのif部分あたり、本みながら
勉強させて貰います。
No.2
- 回答日時:
はじめまして。
抽出したファイル名をオープンして内容を読み込み、別のファイルに出力するって言う処理でいいんではないでしょうか。
自分なりにですが、コードを書いてみたんで、乗せておきますね。
open(OUT,"> output.dat"); #出力用ファイルオープン
opendir ( DIR , "a:\\S603000" ) or die;
while($dir = readdir (DIR) ){
if ( $dir =~ /a086/ ){
open(IN,"$dir"); #データファイル読み込み
while($dat = <IN>){
print(OUT "$dat");
}
close(IN);
}
}
closedir ( DIR );
close(OUT);
おそらく、これでできると思います。
この回答への補足
回答ありがとうございます。
そのまま実行するとブランクファイルが出来てしまいましたので、
処理ファイル抽出と読出し書出しにわけてコード見せて戴きました。
中途半端なコード書いたのが良くなかったかもしれません。
FDにあるS603000というディレクトリの中のa083.000から
a086.XXX(XXXはその都度ちがいます。)のファイルに1行の
テキストデータあるのでそれをファイル番号順に1行づつ
連結して出力ファイルにしたいのです。copy commandを
教わりました。テキストファイルの内容テキストをひたすら連結
しますが、それにファイルデータごとに改行を加えたいのです。
変数の扱いというか拾い出したデータから処理を進めていく
とこでつまづいています(判りづらい説明すみません)。
コード間違って理解していたら申し訳ないのですが、再度
教えて戴けると助かります。
No.1
- 回答日時:
osはwindowsかな?
copyコマンドで十分。perl出番なしかも。
コマンドプロンプトから
copy a:\s603000\a086.* newfile.txt
でOKかと。
perlでやるんだったら、該当するfile読み込んで
出力用のfileに吐き出せばいいのでは。
os書いてませんでした。windowsです。
copy command で出来るなんて思いつきもしなかった
です。連結ソフトでやってみたりはしたんでが、
順番が狂ったり、読込みファイル数に制限があった
りで困って今回投稿しました。
ただ、最終csv形式にしたいのでSGMLのタグの置換
処理と改行コードの追加も合わせてperlが良いのか
なと思い手をつけてみました。
\nで改行コードも置換できそうですので.bat処理も
も検討してみます。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) VBA GetAttrについて教えてください 2 2022/12/22 15:25
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
dos変数の%~dp0は powershellで...
-
batファイルでrenameができませ...
-
パスから最後のディレクトリだ...
-
複数ファイルの読み込みについて
-
Windowsで複数のファイルを同じ...
-
vba dir の相対パス
-
C#での文字抜き出し正規表現に...
-
readdir()で得られるファイル・...
-
ディレクトリ名を取得したい
-
find関数が1階層(カレントディ...
-
LinuxのC言語で、ファイル名の...
-
ファイルの削除について
-
VBAで巨大なファイルの途中から...
-
エクセルVBA コードが同じでも...
-
read() on unopened filehandle...
-
バッチファイルの作り方(CSV→...
-
awkスクリプトでダブルクォーテ...
-
ExcelをCSV書き出す場合のシー...
-
Perlの変数に文字数制限(容量...
-
並び方、
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
batファイルでrenameができませ...
-
readdir()で得られるファイル・...
-
ディレクトリ名を取得したい
-
パスから最後のディレクトリだ...
-
Windowsで複数のファイルを同じ...
-
C言語でファイル名を取得
-
FindFirstFileとFindNextFileで...
-
Perlで フォルダ内の全て...
-
エラー 'dir.h' : No such fi...
-
vba dir の相対パス
-
一定時間が経過したフォルダの削除
-
テキストファイルの結合
-
LinuxのC言語で、ファイル名の...
-
chdirがうまくできない
-
複数のCSVファイルを一つのCSV...
-
ディレクトリの判別
-
空白を含むディレクトリにある...
-
Perl 特定のフォルダ以外削除
-
正規表現で、特定のファイル名...
-
dos変数の%~dp0は powershellで...
おすすめ情報