• ベストアンサー

DOSのdirコマンドで思うようにソートされません。

DOSコマンドで、フォルダ内のファイルリストを作成しようとしているのですが、思うようにソートされずに困っています。 たとえば、image.1.jpg,image.2.jpg,・・・・・image.10.jpg があったときに、"dir /b image.*.jpg > list" とすると、listファイル内では、 image.1.jpg image.10.jpg image.2.jpg image.3.jpg のような順番になってしまいます。 理想的には、以下のようになってほしいのですが。 image.1.jpg image.2.jpg image.3.jpg ・・・・ image.10.jpg UNIXコマンドの場合、"ls image.?.jpg > list", "ls image.??.jpg >> list" 以上のように処理することで、目的を達成できるのですが、 DOS環境で、以上の問題を解決する方法をどなたか教えてください。 宜しくお願いします<(_ _)>

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

  • ベストアンサー
  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.3

#2です。前回の回答の中で、私の勘違いと誤記が1つずつありましたm(__)m。 > image.1.jpg,image.2.jpgなども追加されてしまいます。 Windows XPのDOSプロンプトで確認したところ、ご指摘の通りでした。DOSではUNIXと異なり、"?"が0または1文字を示すようです。回避策はちょっと思いつきません。(__; (ヘルプの説明か実装のどちらかが間違っているように思います) > C:> for /L %N in (1,1,50) do dir /b >> list これはコマンドが不完全でした。正しくは以下の通りです。 C:> for /L %N in (1,1,50) do dir /b image%N.txt >> list

peroncho
質問者

お礼

ご回答ありがとうございます。 教えていただいた方法で、無事に 問題を解決することができました。

その他の回答 (2)

  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.2

> UNIXコマンドの場合、"ls image.?.jpg > list", > "ls image.??.jpg >> list" > 以上のように処理することで、目的を達成できるのですが、 これでいいんだったらDOSでも同じようにすればOKですが(^^;。 # 下の例ではファイルに出力する前に "sort"でソートしてます。 C:> dir /b image?.jpg | sort > list C:> dir /b image??.jpg | sort >> list あとはこんなのもありですかね? (Windows2000以上のDOSプロンプトでしか使えませんのでご注意) C:> for /L %N in (1,1,50) do dir /b >> list

peroncho
質問者

お礼

早速のご回答ありがとうございます。 試してみましたが、次のところ C:> dir /b image??.jpg | sort >> list でなぜか、image.10.jpgのみが出力されないと困るのですが image.1.jpg,image.2.jpgなども追加されてしまいます。 >あとはこんなのもありですかね? (Windows2000以上のDOSプロンプトでしか使えませんのでご注意) C:> for /L %N in (1,1,50) do dir /b >> list この方法については、使い方がわからないので もう少し勉強してみます。

  • yam4649
  • ベストアンサー率29% (8/27)
回答No.1

ファイル名に規則性を持たせなければなりませんね。 アスキーコード表に則りソートされますので、 image001,image002,image010,image100 と云うように連番部分の桁をそろえる必要があります。

peroncho
質問者

お礼

早速のご回答ありがとうございます。 ご指摘のようにファイル名を変えることができれば 問題ないのですが・・・ ファイル名を変更できないので、悩んでおります。

関連するQ&A