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

Windowsのコマンドプロンプトでのcopyコマンドで困っています。

 フォルダ内に次のテキストファイル群があり、これを1つのファイルに結合したいです。
   0201.log
   0202.log
   0203.log
     :
     :
   0229.log
と日付.logがある。
 プロンプトから
   copy 02*.log feb.log
とすると結合してはくれるのですが、順番が前後する場合があります。
 0201の次に0210がきて0211,0212,..0219,0202,0203といった感じです。

 コマンドプロンプトからdirでファイル名を表示させると、確かに結合される順番と合って
いる様子。
 この順番を変えてやればいいのかと思いますが、やり方がわかりません。

 もちろん
   copy 0201.log + 0202.log + 0203.log + ....
とやる方法や、全テキストデータをnotepad等で開いて地道に結合する方法もあるのでしょうが、
効率悪すぎます。

 0201,0202,0203...と順番通りに結合する方法がありましたら、教えてください。

 なお、type 02*.log >> feb.logでも望む結果は得られませんでした。

A 回答 (2件)

>0201の次に0210がきて0211,0212,..0219,0202,0203といった感じです。


> コマンドプロンプトからdirでファイル名を表示させると、確かに結合される順番と合っている様子。

うーん。正常なWindowsだとそうはならないはずですが。。。
dir /on
で、希望通りの順序になるとすると、

del feb.log
for /f %A in ('dir /on /b 02*.log') do type %A >>feb.log

(バッチファイルにするときは、for /f %%A in ('dir /on /b 02*.log') do type %%A >>feb.log )
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
教えていただいた方法で解決しました。

>うーん。正常なWindowsだとそうはならないはずですが。。。

今回のデータ(ログ)は、このWindows-PCで作成されたログではありません。
きっと、このPCで出来たログであれば、順番どおりにならぶのでしょうが、
他のコンピュータからftpでgetしてくるログです。
しかも毎日getするわけではなく、必要なときの必要なログだけだったり、
まとめて全ログgetして上書きしたり....なので順番が前後してしまう状態
でした。

お礼日時:2012/03/03 12:31

> 全テキストデータをnotepad等で開いて地道に結合する方法もあるのでしょうが、


> 効率悪すぎます。
この方法での効率改善を提案してみます。

1)コマンドプロンプトを開く
2)cdコマンドで「その」ディレクトリへ移動する。
  ※cdと半角スペースを入力しておいてエクスプローラから
   フォルダアイコンをドラッグ&ドロップでもOK
3)dir 02*.log /b /o:n > DirText.txt [Enter]
  ※DirText.txtは任意のファイル名でOK

これでDirText.txtに

0201.log
0202.log
0203.log
 略
0229.log

が出来上がります。

4)3)のファイルを、改行を置換できるテキストエディタで開く。
5)改行を+半角プラスに置換。
6)先頭行に、Copy半角スペースを、末尾に半角スペースとfeb.logを入力。
7)保存して拡張子をBATかCMDに変更。
8)バッチファイルを実行。

というのはいかがでしょうか?
    • good
    • 0

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