プロが教える店舗&オフィスのセキュリティ対策術

PowerShellでファイルの連結をしたいと思っています。

例えば、C:\にa.csv、b.csv、c.csvがあったとします。
Get-Contentを実行すると、問題なくCSVの中身が出力されます。

次に、ネットにあったファイル結合方法を試してました。

Get-Content *.csv > output.csv

実行すると、output.csvに次々とデータが追加されて、ループ状態でどんどん増えていきます。
強制終了で終了させましたが、1回のみファイルの結合をしたいと思いますが、どのようにすればよいでしょうか?

A 回答 (1件)

PowerShell のことは全く知らないのですが、これはひょっとして output.csv の内容を読み出しながら読み込んだ内容を output.csv に追記していっているのではないでしょうか。


たとえば output.csv が(それまでの処理で)10 行あったとして、

1 行目読み込み
 ↓
読み込み内容を 11 行目として追記
 ↓
2 行目読み込み
 ↓
読み込み内容を 12 行目として追記
 ↓
……(中略)……
 ↓
10 行目読み込み
 ↓
読み込み内容を 20 行目として追記
 ↓
(最初はなかった)11 行目読み込み
 ↓
読み込み内容を 21 行目として追記
 ↓
……(以下略)……

という事になっているのではないかと。

対処法として
Get-Content *.csv > output.temp
としてから output.temp を output.csv にリネームするというのを思いついたのですがいかがでしょうか。
    • good
    • 1
この回答へのお礼

なんと!PowerShellを知らないのに適切なご回答ありがとうございます。お教え頂いた通りにoutput.tmpとして実行したら普通にできました。

おそらくお教え頂いた通りのような事がおこなわれているが為に、起こっている現象のような気がします。気づきませんでした。本当にありがとうございます。

お礼日時:2014/09/07 00:34

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