• ベストアンサー

大量のファイルを作成するプログラムで

とても初歩的な質問なのですが、 ある変数Aに1~100のデータを、 ある変数Bに1~100のデータを入れて、 AとBの組み合わせの数だけ、文書を作成します。 たとえば A1B1.dat というファイルには ヘッダ Aに1を入れたデータ Bに1を入れたデータ フッタ という構成になっています。 これを100×100の都合10000ファイル作成しないといけないのですが、 どんなプログラム言語が適しているでしょうか? プログラム言語でなくとも、適しているツールなどがあればお教えください。

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

  • ベストアンサー
  • au-W52SH
  • ベストアンサー率12% (58/471)
回答No.1

これでできるかは分かりませんが… ループ(Aを1から100まで動かす){  ループ(Bを1から100まで動かす){   ファイル作成{    ファイルの中身:ヘッダ・Aのデータ・Bのデータ・フッタ   }   Bに1を足す  }  Aに1を足す } という考え方でできると思います。 C言語の二重ループを思い浮かべながら書いてみたのですが…

pugera542
質問者

お礼

ありがとうございます。 まさにそのやり方でいけると思います。 ちょうどexcelにデータが入ってますので、 No.3の方の意見を元にVBAで処理してみようと思います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.4

だいたいの言語系で処理可能です。ポイントは以下の通り。 (1)本体が重くないこと(容量が小さい) (2)実行時にRunTime等が不要なこと(何もインストールしないで済む) WindowsならScript(VB/Java)が安直だと思います。

pugera542
質問者

お礼

回答ありがとうございます。excelのVBAを使ってみます。

全文を見る
すると、全ての回答が全文表示されます。
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

ヘッダ、フッタ等の言葉がでているので、excelの事でしょうか。 もしそうなら、VBAがexcelについてますので、それがよいでしょう。 もう少し、環境(windowsなのかlinuxなのか)、ファイルの詳細(どんなファイルなのか)等を提示されると、もっと良い回答が得られるかと思います。

pugera542
質問者

お礼

ありがとうございます。OSはwindowsです。 excelで可能ならば追加費用もないので、大変うれしいです。 実際に今もAおよびBの1~100のデータはexcelで管理してます。 自分で調べながらやってみますが、 もしよろしかったら、ファイルを作成する命令などをお教えいただけませんでしょうか?

pugera542
質問者

補足

VBAでやってみたらできましたああああああ 皆様のおかげです。 こんなにあっさりいくとは思いませんでした。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

開発言語の問題ってよりも、環境が問題になってきますね。 書き方の差はありますが、 ヘッダを作成するルーチン(関数・ファンクション)を作成して フッタを作成するルーチン(関数・ファンクション)を作成して ループを二重にして 数値から文字列を連結してファイル名を生成して、 そのファイル名でファイルを作成して 先ほど作ったルーチン二つを呼び出して ファイルを閉じる ループを閉じる 見たいな形になると思うので、言語的には適している、適してないは無いと思います。殆どが基本的な構成だけでプログラムを作る事が出来ます。

pugera542
質問者

お礼

回答ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C言語でヒストグラムを作成するプログラムを作りたいのですが

    C言語でヒストグラムを作成するプログラムを書いたのですが、正しい濃度値が出力されずに困っています。 ヘッダなしの2バイト画像データを読み込みヒストグラムを書き出すプログラムです。 gccを使っています。 よろしくお願いします。

  • ソケット通信プログラムのヘッダファイルについて

    失礼します。現在Visual Studio 2005でC言語を使ってソケット通信のプログラムを作ろうとしています。 複数のサイトでサンプルプログラムを見つけたのですが、<sys/socket.h>等のヘッダファイルをインクルードしています。 これらのヘッダファイルは自分で作成するのでしょうか? もしわかる方がいましたら教えてください。お願いします。

  • ワードのファイル結合

    ワードで作ったファイルA.B.Cを一つのファイルDにしたいと思うのですが、Aにはヘッダーとフッターが付いていて用紙の向きは縦、Bにはヘッダーフッターが付いてなく向きは横、Cはヘッダーフッターが付いてなく向きは縦。このままの条件(書式)でDを作りたいのですがどのようにしたら良いでしょうか。 また別質問ですが、ファイルAは3頁あり、1頁目と2.3頁のヘッダーの入力文章が異なっているのですがこれを作った人が辞められた為、私にはどのようにして異なった文章を入れられるのかわかりませんのでこちらの回答も宜しくお願します。

  • 複数ファイルによる共通の外部変数定義について

    初歩的な質問なのですが、今各関数をファイルごとに分けて記述しようとしています。 ここで詰まっているのでできればご教授お願いします ファイル構成は プログラムファイル main.cpp sub.cpp ヘッダーファイル  myheader.h(main.cppとsub.cpp両方でインクルード) ヘッダーファイルには両方のプログラムファイルで使う変数が定義してあります。 それでmain.cppとsub.cpp両方で同じ変数を使いたいのですがコンパイルエラーが発生してしまいます。 内容はsub.obj側で「i(共通のループカウンタ)はmain.objですでに定義されています」というものです。 とにかく私のやりたいことはヘッダーに外部変数を定義して両方のプログラムファイルで使いたいというものです。 もしかしたらファイルを分けるにも何か設定が必要なのでしょうか? 私はただ[プロジェクト]→[プロジェクトに追加]→[新規作成]でソースファイルを作っているだけなんですが・・・ 上記の状態を回避する方法はあるのでしょうか?

  • ファイルの入力、出力

    #include<stdio.h> int main(){ int a,b; FILE *fp0, *fp1;   fp0 = fopen("test1.dat", "r"); if( fp0 == NULL ){ printf("Cannot open test1.dat"); exit(1); } fp1 = fopen("file.txt", "w"); while((fscanf(fp0, "%d %d", &a,&b)) != EOF){ fprintf(fp1, "%d %d\n", a*a,b*b); } fclose(fp0); fclose(fp1); return(0); } test1.datファイルを読み込んで、変数a,bに値をいれ、 その二乗結果をfile.txtに書き込むプログラムなのですが test1.datファイルに書き込まれてる値をどのようにa,bに代入されているのかわかりません。 例えば test1.datが 1 2 3 4 5 であると、 file.txtには 1 4 9 16 25 16 と書き込まれています。 test1.datが 1 1 2 2 3 3 であると file.txtには 1 1 4 4 9 9 となっています。 どのように、変数に値が入るのでしょうか??

  • ファイル操作について、テキストファイルの書き換え

    よろしくお願いします。 データファイルAからデータを取得して、テキストファイルBの内容の一部を取得したデータで書き換えるという操作を行うプログラムを作りたいです。 具体的には、 データファイルA[A.txt]の中身 111 222 333 444 テキストファイルB[B.txt] 文字列1="123" 文字列2="234" 文字列3="345" 文字列4="456" というような二つのファイルを読み込み、B.txtの""で囲まれた部分を、A.txtで取得したデータで置き換えるような操作を行いたいのですが・・。 使用する言語としてはスクリプト言語であるperl、もしくはプログラム作成経験があるCを使用しようと思っています。(perlは未経験で入門書を読んでいるレベル)

    • ベストアンサー
    • Perl
  • バッチ処理のプログラム

    フォートランでプログラミングされたプログラムをexe形式で受領しており、それを使って大量の解析をします。 繰り返し作業が多く、効率がよくないので、バッチ処理などで効率化する方法をご教示いただけないでしょうか? <作業の流れ> フォルダ1の中に、 インプットデータファイル60個(01-aaaA1.dat,02-abcA1.dat,03-abgA1.dat,...,60-xxx.dat) a.exe,使用するインプットデータ(a-input.dat) b.exe,使用インプットデータ(b-input.dat) があります。 なお、a.exeを実行するには、それぞれのインプットデータをその都度a-input.datに書き換える必要があります。 (1)01-aaaA1.datをa-input.datにリネーム (2)a.exeを実行すると、outフォルダが自動で作成され、その中に計算結果(a.out,b.out,c.out,d.out,e.out,f.out....10ファイル位)が格納されます。 (3)計算結果のファイル名の頭にa-input.datに変える前の名前に-を付け加え(例えば、01-aaaA1-...)を先頭に追加します。 (4)リネームした計算結果ファイルをフォルダ1の中にフォルダ2、フォルダ3、フォルダ4を作成してそのなかに移動させます。 フォルダ2 → 01-aaaA1-a.out フォルダ3 → 01-aaaA1-b.out フォルダ4 → 01-aaaA1-c.out、01-aaaA1-d.out、01-aaaA1-e.out、01-aaaA1-f.out・・・・ という具合です。 ここまでが1ケースの計算の流れになります。 次に02-abcA1.datをa-input.datにリネームして同様に繰り返します。 別処理で、このあと、b-input.datを実行しますが、b-input.datはフォルダ2内のファイル名を書く必要があるため、 フォルダ2内のファイル名を取得して、b-input.datの4行目以降に付け加える処理もお願いできると助かります。 この作業を500ケース程度するのですが、時間もなく、リネーム→実行→リネーム→移動といった作業が非効率のため、 どうがご教示願います。 OS win7

  • 配列のプログラム作成

    【質問】 次の処理を行うプログラムを作成します。 (1)10個の要素を持つ一次配列dat[10]を宣言します (2)dat[0]に0、dat[1]に1をセットします (3)dat[2]以降の要素には、前の2つの要素の和を計算し入力します (4)配列の各要素の値を表示します 【プログラム作成例】 dat[ 0] = 0 dat[ 1] = 1 dat[ 2] = 1 dat[ 3] = 2 dat[ 4] = 3 dat[ 5] = 5 dat[ 6] = 8 dat[ 7] = 13 dat[ 8] = 21 dat[ 9] = 34 上記の解答は下記の通りなのですが、下記以外の解答方法を教えてはいただけないでしょうか? C言語に詳しい方よろしくお願いいたします。 #include <stdio.h> main() { int i, dat[10]; dat[0] = 0; dat[1] = 1; for (i=2; i<10; i++) { dat[i] = dat[i-2] + dat[i-1]; } for (i=0; i<10; i++) { printf ("dat[%2d] = %2d\n", i, dat[i]); } return (0); }

  • CGIプログラムを使ってレースの結果をHTMLに表示

    CGIプログラムの件でご質問したいのですが、datファイルのレース結果をCGIプログラムを使ってHTMLに表示したいと思っています。 datファイルの内容は、レースの結果が1位から順に10位くらいまでA,B,Cクラス混合で並んでいます。 1,Aクラス,青チーム,12:50,山本太郎 2,Cクラス,赤チーム,11:23,山田花子 3,Bクラス,黄チーム,10:52,松本典子 4,Aクラス,桃チーム,10:32,加藤茶子 それをCGIプログラムによって、各クラスごとに表示します。 CGIのプログラムの内容は、 open (FILE, "<data.dat") || die "File 'data.dat' Open Error."; @all = <FILE>; close(FILE); foreach (@all){ ($data1, $data2, $data3, $data4,$data5) = split(/,/, $_); next unless ($data2 eq "A"); &one_data; } sub one_data { print << "END_OF_ONE"; <P>$data1位<BR> $data2<BR> $data3<BR> $data4<BR> $data5<BR> </P> END_OF_ONE } 1; だいたいこんな感じですが、この各クラスごとに表示したHTMLのファイルの順位のところが、もとのdatファイルの順位になってしますので、それを1位から順にクラス別の順位として表示したいのです。 それにはどのようにしたらよいでしょうか? すみません、あまりperlの言語の知識がないもので。。

    • 締切済み
    • CGI
  • 大量データから抽出する際の効率よいperlプログラム作成について教えて

    大量データから抽出する際の効率よいperlプログラム作成について教えてください。 例) 大量データ Aファイル 3列 可変値(数値、URL、数値)タブ区切り 重複値あり 123 http://www.XX.co.jp/XX 4567 1111 http://www.XX.co.jp/XX 3333 3 http://www.XX.co.jp/YZ 4567 1111 http://www.YYY… 116 … 抽出対象データ Bファイル 1列(URL)重複なし http://www.XX.co.jp/XX http://www.XX.co.jp/ZZZ … Aファイル、BファイルともにURL降順ソートされている BファイルにあるURLがAファイルにある場合 Aファイルのその行を抽出したい。 grepで実施すると すごい時間がかかってしまうため、効率よい抽出方法をおしえてください。

    • ベストアンサー
    • Perl