dポイントプレゼントキャンペーン実施中!

C:\log\abc のディレクトリの中に、
log.csv
log1.csv
log2.csv
log3.csv....
という複数のファイル(最終番号は絶えず変動する)があり、
それぞれは1行4カラム記載されています。

やりたいことは、バッチファイルにより
log.csvのカラム内容
log1.csvのカラム内容
log2.csvのカラム内容
log3.csvのカラム内容
が最終番号のcsvファイルまで1つのlogR.csvに纏まることです。

下記のバッチファイルを組んでみたのですが、
C:
CD \log\abc
COPY log.csv logR.csv
type log1.csv >> logR.csv
type log2.csv >> logR.csv
type log3.csv >> logR.csv

これだと、追記が2行目3行目とならず、1行目の横にずっと広がって追記されてしまいます。

また、バッチファイルの指示が番号指示になってしまいますので、この指示番号から外れた
ファイルがあった場合は、書き込みがされなくなります。

やりたいことは、
●行として追記されること。
●logの番号.csvを全て自動で読みだして追記することです。

http://oshiete.goo.ne.jp/qa/1371517.html

の方法は試したのですが、どうもうまくいきませんでした。
お手数をおかけいたしますが宜しくお願い致します。

A 回答 (2件)

深く考えずに答えてみます。



一回改行しているだけのテキストをそれぞれのCSVファイルの間に挟んではいかがですか。
    • good
    • 0
この回答へのお礼

出来ました。
有難うございました。
大変助かりました。感謝です!!

お礼日時:2012/02/18 19:08

echo[ とか echo\ などのようにして、echoコマンドで改行(だけ)を表示できるので、



(type log1.csv & echo[)>> logR.csv

とすれば行末に改行が追加できます。
(2つのコマンドを & でつないで逐次実行とし、
 その全体を括弧でくくって、全部の結果を logR.csvに書き込みます。
  type log1.csv & echo[>> logR.csv
 と書くと、log1.csvの内容を画面に表示した後、
 改行だけを logR.csv に追記してしまいます。
 )

次のようなバッチファイルを作れば、
おおむね希望通りになるかと思います。

C:
cd \log\abc
if exist R.csv del R.csv
for %%v in (log*.csv) do (type %%v & echo[) >> R.csv

*結果を書くファイル名を R.csv に変えています。
 logR.csvだと、 for %v in (log*.csv) でlogR.csv自身を拾って
 内容が二重になったりします。

* (type %v & echo[) の、[ と ) の間に空白を入れると、その空白が
 R.csv(の各行末)に入ってしまうので気をつけてください。

*バッチファイルに書く場合には
 for %%v in (log*.csv) do (type %%v & echo[) >> R.csv
 のように2箇所の %v は、%%v と % を2つ続けて書いてください
    • good
    • 0
この回答へのお礼

出来ました。
有難うございました。
大変助かりました。感謝です!!

お礼日時:2012/02/18 19:09

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