プロが教えるわが家の防犯対策術!

DOSコマンドです。ご教示願います。
DOSコマンドで以下のBATファイルを作成したいと考えています。

1.特定のフォルダ「D:\CSV」に以下の形式のファイルがあります。
・HEAD_DATA_yyyymmdd.csv(yyyymmddは今日の日付西暦8桁)
・BODY_DATA_yyyymmdd.csv(yyyymmddは今日の日付西暦8桁)

2.上記の2つのファイルは「yyyymmdd」の部分が、システム日付を最大に、昨日、前々日と過去に遡った日付のファイルが複数存在します。「D:\CSV」に存在するファイル数は日によって違います。

3.「D:\CSV」に存在するファイルを日付の降順に1ファイル入力し(HEAD~と、BODY~の入力順は考慮しない)、そのファイルの中に存在するレコード(数百件あり)をDBにINSERTします(このDBへのINSERT処理部分はここでは「処理A」と置き換えることにします)。INSERTし終わったファイルは、「D:\CSV\BACKUP」に移動します。

4.上記「3.」をファイルがなくなるまで繰り返します。ただし、yyyymmddの降順に処理を行う必要があるので、「yyyymmdd - 1日」の順番で処理をします。「-1日」する際は、うるう年なども考慮する必要があります。

どのような記述にすればいいのか知識が乏しく。
どうかご教示をお願いいたします。

A 回答 (2件)

複数のCSVファイルを一つのCSVファイルにするには:Windowsのメモ帳に「copy *.csv all.csv」と記載し、拡張子を「.bat」にしたファイルを結合したいCSVの入ったフォルダに入れる。



フォルダを作り、そのフォルダに結合したいCSVファイルを入れ、「copy *.csv all.csv」のバッチファイル(例:all.bat)も同じフォルダに入れ、all.batをダブルクリックすると、そのフォルダにall.csvが作成される。all.csvを開き(タイトル行が不要なので)削除し上書き保存。(一つのcsvファイルになる)
    • good
    • 1

最近のバッチファイルに詳しくないのですが、これらの処理は汎用的なひとつのバッチファイルにはできないと思います。



まず、コマンドラインから与えられたファイルで「3」を処理するだけの一つ目のバッチファイルを作成します。

D:\CSV\>dir /b /o-n >bat.txt

で bat.txt を作成して、それをテキストエディタのマクロで一気に変換して、あらかじめ作成しておいたバッチファイルにコマンドラインでファイル名を渡す(バッチファイルを呼び出す)、二つ目のバッチファイルを作成する。

つまり、一つ目のバッチファイルは汎用的にそのまま使い続けられますが、二つ目のバッチファイルは、ファイルのリストが更新される都度、作り直さないといけないです。
    • good
    • 1

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