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

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環境で、以上の問題を解決する方法をどなたか教えてください。
宜しくお願いします<(_ _)>

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/11/13 00:09

> 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
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
試してみましたが、次のところ
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
この方法については、使い方がわからないので
もう少し勉強してみます。

お礼日時:2006/11/11 01:13

ファイル名に規則性を持たせなければなりませんね。


アスキーコード表に則りソートされますので、
image001,image002,image010,image100 と云うように連番部分の桁をそろえる必要があります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/11/11 01:07

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