こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

WindowsDOSコマンドで次のBATファイル

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日」する際は、うるう年なども考慮する必要があります。

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

投稿日時 - 2020-09-16 10:45:23

QNo.9800048

困ってます

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

xxxx_DATA_yyyymmdd.csvファイルを、
yyyymmddの降順でソートして、
降順でDBに1本読ませる。
(DBはCUIでそうできるようになってる前提が必要だが。)

DBが読んだxxxx_DATA_yyyymmdd.csvファイルを
D:\CSV\BACKUPに移動する。

xxxx_DATA_yyyymmdd.csvファイルが無くなるまで繰り返す。
ということね?これならできそうだ。

しかし、yyyymmddをバッチファイルなどが- 1日するというのをよく分からない。ファイルをyyyymmddの降順でソートして、処理済みディレクトリに移動したら、

yyyymmddの降順でソートしたトップが次に処理するファイルになっているのだから、-1する必要は無いと私は思う。

投稿日時 - 2020-09-16 11:32:43

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

まず、DOSコマンドではCSVファイルは読めません。
テキスト形式でなければなりません。

あと、ファイル名の降順がちょっと厄介ですね。
てかDBに入れるだけなら順序は関係ないですね。

DBはレコード順というのを持っていません。
取り出すときにソートすれば良いだけですね。

投稿日時 - 2020-09-16 11:23:20

あなたにオススメの質問