• ベストアンサー

MS-DOSのワイルドカードの扱いについて

Windows 7環境で、MS-DOSのバッチファイルを作っています。 MS-DOS上でのワイルドカードの扱いに疑問がわいたので質問させてください。 C:\直下に TEST - 01、TEST - 02、…、TEST - 12 というディレクトリを作ったのですが、 dir *04* のコマンドで TEST - 04 TEST - 09 の両方がヒットしてしまいます。 TEST - 04のみヒットすることを期待したのですが、09のほうまでヒットするのはなぜでしょうか。 以下、テキスト貼り付けですが、画面のコピーです。 C:\>dir *04* ドライブ C のボリューム ラベルがありません。 ボリューム シリアル番号は ****-**** です C:\ のディレクトリ 2013/08/03 22:40 <DIR> TEST - 09 2013/08/03 22:39 <DIR> TEST - 04 0 個のファイル 0 バイト

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.1

>dir *04* >TEST - 04のみヒットすることを期待したのですが、09のほうまでヒットするのはなぜでしょうか。 バグかも知れません。 目的としては"TEST - 01"~"TEST - 12"の中から"TEST - 04"を抽出して表示することですから末尾の"*"は余分な条件です。 dir *04 では正常に"TEST - 04"のみヒットします。 コマンドの動作特性を勘案して適切な記述をしてください。

treelock
質問者

お礼

ご回答、ありがとうございます。 今回は、テストデータなので、分かりやすくする為、末尾にナンバーが入っているのですが、必ず末尾にあるとは限らないため、部分一致で検索することが要件となっています。

その他の回答 (2)

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.3

>私は前方一致と後方一致で二回検索する方法しか思い当たりませんが、ほかに良い方法はございますでしょうか。 目的に合えば良いんじゃないでしょうか。 MS-DOSのコマンドを駆使したのは20年ほど前のことなので殆ど覚えていません。 MS-DOSコマンドでもループ処理ができたと思います。 目的のディレクトリから順次フォルダ名を読み込んで処理を判定する手法が有ったように思いますのでコマンド一覧から動作を確認して利用されると良いでしょう。 尚、別の手法として、C++等でショートプログラムを書かれるのも考え易い方法ではないでしょうか?

treelock
質問者

お礼

ご回答、ありがとうございます。 仰られているとおり、コマンド一覧から動作を確認してみようと思います。 また、ショートプログラムも検討してみます。 最後まで、お付き合いくださって、ありがとうございました。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.2

>必ず末尾にあるとは限らないため、部分一致で検索することが要件となっています。 私はあなたのバッチファイル作成について要件を知る必要が無く、しかも、あなたの思惑通りに動作しないことについても関知しません。 回答に有りますように「バグの可能性」と「このような応答である」ことの情報を提供しただけです。 あなたが求める応答が得られるような記述をご自身で考えてください。 ワイルドカードは * に限らず ? も使えますのでディレクトリ構造に合った記述方法を考えてください。

treelock
質問者

お礼

ご回答、ありがとうございます。 >私はあなたのバッチファイル作成について要件を知る必要が無く、しかも、あなたの思惑通りに動作しない >ことについても関知しません。 こちらについて、仰られる通りです。 先ほどの回答内容について、私の説明が不足しており、申し訳ございません。 質問内容には記載しておりませんでしたが、回答したとおり、中間一致で検索したいと考えております。 その場合、私は前方一致と後方一致で二回検索する方法しか思い当たりませんが、ほかに良い方法はございますでしょうか。

treelock
質問者

補足

>その場合、私は前方一致と後方一致で二回検索する方法しか思い当たりませんが、 すみません、今、回答を見ていて気がついたのですが、前方一致と後方一致で二回検索しても中間一致検索は実現できませんね。こちらは取り消します。

関連するQ&A

  • バッチファイルで一つのファイルをdirで比較し分岐

    バッチファイルでフォルダにある全てのファイルに対し ファイルごとにdir /T:Cとdir /T:Wで比較し 同じならば削除 異なれば何もしない 処理をしたく質問させて頂きました 次のような結果の場合日時が同じなのでファイルを削除する C:\>dir D:\AAA\001.jpg /T:C ドライブ D のボリューム ラベルは microSD です ボリューム シリアル番号は E484-83B8 です D:\AAA のディレクトリ 2012/11/28 12:59 1,284 001.jpg 1 個のファイル 1,284 バイト 0 個のディレクトリ 24,690,798,592 バイトの空き領域 C:\>dir D:\AAA\001.jpg /T:W ドライブ D のボリューム ラベルは microSD です ボリューム シリアル番号は E484-83B8 です D:\AAA のディレクトリ 2012/11/28 12:59 1,284 001.jpg 1 個のファイル 1,284 バイト 0 個のディレクトリ 24,690,798,592 バイトの空き領域 日時が異なるので何もしない C:\>dir D:\AAA\002.jpg /T:C ドライブ D のボリューム ラベルは microSD です ボリューム シリアル番号は E484-83B8 です D:\AAA のディレクトリ 2012/11/07 03:12 1,443,326 002.jpg 1 個のファイル 1,443,326 バイト 0 個のディレクトリ 24,690,798,592 バイトの空き領域 C:\>dir D:\AAA\002.jpg /T:W ドライブ D のボリューム ラベルは microSD です ボリューム シリアル番号は E484-83B8 です D:\AAA のディレクトリ 2012/11/04 17:53 1,443,326 002.jpg 1 個のファイル 1,443,326 バイト 0 個のディレクトリ 24,690,798,592 バイトの空き領域 またもっと簡単にdir D:\AAA /T:Cとdir D:\AAA /T:Wの結果で 分岐処理は可能でしょうか よろしくお願いします

  • Windows10で削除できまいディレクトリがある

    コマンドプロンプトでdirを実行すると、 H:\>dir ドライブ H のボリューム ラベルは USBHDD です ボリューム シリアル番号は EC54-481F です H:\ のディレクトリ 2018/12/27 17:06 31 Autorun.inf 2020/05/05 06:03 <DIR> BUFFALO SmartTwins 2019/12/04 11:55 <DIR> BUFFALO_みまもり合図 2020/06/19 05:54 <DIR> DeskTop 2018/12/27 17:06 515,640 DOWNLOAD_PAGE.exe 2018/12/27 17:06 518 DOWNLOAD_PAGE.ini 2020/12/04 23:43 <DIR> eDrive 2018/12/27 17:06 48,841 Icon1.ico 4 個のファイル 565,030 バイト 4 個のディレクトリ 3,730,315,259,904 バイトの空き領域 しかし実際には表示されていないdDriveというディレクトリがあります。 H:\>cd dDrive H:\dDrive>dir ドライブ H のボリューム ラベルは USBHDD です ボリューム シリアル番号は EC54-481F です H:\dDrive のディレクトリ 2020/11/28 08:11 <DIR> Java 2018/02/21 19:59 <DIR> JumpActionGame 2020/11/28 08:14 <DIR> Python385 0 個のファイル 0 バイト 3 個のディレクトリ 3,730,315,259,904 バイトの空き領域 このディレクトリを削除しようとすると、 H:\dDrive>cd \ H:\>del dDrive H:\dDrive\*、よろしいですか (Y/N)? Y H:\>cd dDrive H:\dDrive>dir ドライブ H のボリューム ラベルは USBHDD です ボリューム シリアル番号は EC54-481F です H:\dDrive のディレクトリ 2020/11/28 08:11 <DIR> Java 2018/02/21 19:59 <DIR> JumpActionGame 2020/11/28 08:14 <DIR> Python385 0 個のファイル 0 バイト 3 個のディレクトリ 3,730,315,259,904 バイトの空き領域 とまったく削除されず残っています。 コマンドプロンプトではなくWindows ExplorerでもdDriveはアイコンもフォルダも表示されていません。[右クリック]->[新規作成]->[フォルダ]で新規フォルダを作成し、フォルダ名をdDriveに変更しようとすると、 この宛先にはすでに'dDrive'が存在します。 同じ名前のファイルがある場合、それらのファイルを上書きするかどうかたずねられます。 このフォルダー  dDrive 作成日時:2020/01/13 15:33 に次のフォルダーを統合しますか?  新しフォルダ― 作成日時:2020/12/05/1:10 はいをクリックしても、ディレクトリdDriveは表示されません。 まずは何とかして2020/01/13に作成したdDriveを削除しないといけないようです。かなりの容量のファイルが入っているので、削除せず放置するわけにもいきません。 コマンドプロンプトは管理者用を使っています。 普通のコマンドプロンプトではH:ドライブにアクセスできません。 このようなトラブルは初めてですので、どうぞよろしくお願いいたします。

  • 特定のフォルダが見れません

    外付けHDDを使用しているのですが、 突然、特定のフォルダが認識しないようになりました。 IがHDDです。見れなくなったフォルダはtest1とします。 I:\test1 フォルダtest1の内容が表示されないようになりました。 I:\自体(HDD直下)のフォルダ一覧は表示されるのですが、 test1以下のサブフォルダとファイルが表示されません。 たまたま、test1内のフォルダtest2(I:\test1\test2)の ショートカットがディスクトップにあったので、 クリックしてみるとアクセスできます。 コマンドプロンプトから確認してみても、 I:\>cd test1 I:\test1>dir ドライブ I のボリューム ラベルがありません。 ボリューム シリアル番号は F09C-73A3 です I:\test1 のディレクトリ 2006/01/08 01:23 <DIR> ファイルが見つかりません このようにファイル一覧が見れません。 しかし、test1直下のtest2へは移動できます。 I:\test1>cd test2 I:\test1\test2> ファイル一覧が見れないのでバックアップを取ろうにも出来ません。 どうしたらよろしいでしょうか? 何卒ご教授の程、よろしくお願いいたします。

  • Windows11のISOをDVDに焼いたモノを再

    DVDの中身を書き換えて再度インストールDVDにしたいです。 Windows11のISOをDVDに焼いたモノを適当なフォルダにコピーしました。 C:\Windows11の中身>dir ドライブ C のボリューム ラベルがありません。 ボリューム シリアル番号は X99X-9XXX です C:\Windows11の中身 のディレクトリ 2022/12/28 14:30 <DIR> . 2022/12/28 14:28 <DIR> .. 2022/09/25 16:01 128 autorun.inf 2022/12/28 14:15 <DIR> boot 2022/09/25 16:01 442,062 bootmgr 2022/09/25 16:01 2,556,264 bootmgr.efi 2022/12/28 14:30 0 dir 2022/12/28 14:15 <DIR> efi 2022/09/25 16:01 95,712 setup.exe 2022/12/28 14:16 <DIR> sources 2022/12/28 14:16 <DIR> support 5 個のファイル 3,094,166 バイト 6 個のディレクトリ 315,621,957,632 バイトの空き領域 sources\appraiserres.dll を書き換えた後に再度DVDに焼きたいです。 単純にコピペしてデータとして焼くのはできましたが、 そうではなく 再度ISO化してインストーラとして焼きたいです。

  • Windowsバックアップでのエラー対応

    Windowsバックアップでバックアップをすると、終了後バックアップの結果の確認で「バックアップは完了しましたが、一部のファイルはスキップされました。」と表示され、オプションでスキップされたファイルを確認すると、テキストエディタで 「ファイル C:\Users\t******2\Saved Games のバックアップ中に問題が発生しました。エラー:(指定されたファイルが見つかりません。 (0x80070002))」 となってしまいます【user名は*で伏字にしています、以下同】 一方コマンドプロンプトで確認すると C:\Users\t******2>dir ドライブ C のボリューム ラベルは T**********O です ボリューム シリアル番号は 0046-6662 です C:\Users\t******2 のディレクトリ 2014/12/26 07:54 <DIR> . 2014/12/26 07:54 <DIR> .. 2014/08/14 02:51 <DIR> Contacts 2014/12/28 10:35 <DIR> Desktop 2014/12/26 07:43 <DIR> Documents 2014/12/28 04:52 <DIR> Downloads 2014/12/21 17:52 <DIR> Favorites 2014/12/21 13:38 <DIR> Links 2014/12/21 10:41 <DIR> Music 2014/12/23 14:57 <DIR> Pictures 2014/12/23 06:12 <DIR> Saved Game 2014/08/14 02:51 <DIR> Searches 2014/12/26 07:54 0 Sti_Trace.log 2014/12/25 23:30 <DIR> Videos 1 個のファイル 0 バイト 13 個のディレクトリ 290,920,656,896 バイトの空き領域 と、Saved Gameディレクトリは存在します、ただcd Saved Gameとすると「指定されたパスが見つかりません。」と下りることはできません ディレクトリネーム中にスペースがあることが問題なのでしょうか? ゲームはしないのでディレクトリSaved Gameをrdしてしまっても構わないのですが、Windowsの動作に影響は無いのでしょうか? どなたか対応方法ご存知ないでしょうか? よろしくお願いします

  • vliteについて

    Let's note CF-R6を使用しています。 重いのでvliteを使用して軽量化しようと思ったのですが、付属のDVDの中味を全てコピーしてコピーしたディレクトリを指定しているのですが、 指定されたファイルが見つかりませんでした。Vistaインストレーションファイルが含まれているフォルダ、ドライブが選択されているかどうか確認してください。 注記:C:\WindowsのようなすでにインストールされたWindowsを使用することは出来ません。 と、表示されvliteを使用することが出来ません。 コマンドプロンプトでxcopyコマンドを打ち込んでコピーしているので、コピー漏れはないと思うのですが理由がよく分かりません。 因みに、リカバリーディスクの中味は以下のようになっています。 ドライブ G のボリューム ラベルは CD_ROM です ボリューム シリアル番号は 678E-B8CB です G:\ のディレクトリ 2007/01/29 17:06 <DIR> BOOT 2006/11/02 01:53 438,840 BOOTMGR 2007/01/29 16:53 <DIR> HD 2007/01/29 16:53 <DIR> SOURCES 2007/01/29 16:05 31 VERSION.DOC 2007/01/23 21:21 18 VERSION.DVD 2006/12/12 16:47 15 VERSION.TPL 4 個のファイル 438,904 バイト 3 個のディレクトリ 0 バイトの空き領域 どなたかよろしくお願いします。

  • MS-DOSで「>」が出てきません

    VAIO C1S で突然Windowsが立ち上がらなくなり、フロッピードライブから起動ディスクで立ち上げてc:の中を見ることが出来ないか、とMS-DOSコマンドをいじっておりました。 はじめはdir コマンドで c:の中が見えていたのですが、¥windows の中を見ようとしたあたりから、雲行きが怪しくなり、その後切ったり、再度起動してみたりということをしているうちにms-dosコマンドが通常なら 「A:\>」のように「>」が表示されて、こちらのコマンド入力が出来るようになるところが「A:A:」のようになってしまいコマンドが入力できません。何度立ち上げ直しても同じです。何が起こっているのでしょうか。どうしたら通常のモードに戻れるのでしょうか。 なお、私の真の問題はハードディスクの中の必要なファイルを救い出すことにありますので、そのアドバイスもできたらお願いします。

  • コマンドプロンプトの"*"の使いかたを教えてください。

    たとえば下記のフォルダが並んでいるところでですが、 C:. ├─20090501 ├─20090502 ├─20090503 ├─20090504 ├─20090505 ├─20090506 ├─20090507 ├─20090508 ├─20090509 └─20090510 このディレクトリにて、dir 2009050* とコマンドを 打ち込むと上記のフォルダが正しく出力されます。 しかし・・・ rd 2009050* と打ち込むと・・・ ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。 アスタリスクはこの場合どのように使ったらよろしいのでしょうか? 教えてください。

  • WindowsXP共有フォルダーが列挙されない

    会社でネットワーク管理をすることになりました。 詳しい方の助言を希望します。 問題点  net use でフォルダー共有が出来ているのに net view で「システム エラー 5」でアクセス拒否される。 現象  サーバー側共有フォルダーにファイル読み書きのアクセスは出来ているのに、クライアント側からサーバー側共有リソースを列挙しようとするとアクセスが拒否される。   その為、マイネットワークからサーバーにアクセス出来ない。 環境 サーバー側 WinXP Pro SP3 IPアドレス固定 PC名 MT7000 クライアント側 WinXP Pro SP3 IPアドレス固定 同一ワークグループ サーバー側 コマンドプロンプト C:\temp>net view \\MT7000 \\MT7000 の共有リソース 共有名 タイプ 使用 コメント ------------------------------------------------------------------------------- CanonMF4350d Print Canon MF4350d CanonMF4350d(FAX) Print Canon MF4350dFAX) KL-V450 Print KL-V450 share Disk コマンドは正常に終了しました。 クライアント側 コマンドプロンプト C:\temp>net use G: \\mt7000\share /user:test testpass コマンドは正常に終了しました。 C:\temp>dir g: ドライブ G のボリューム ラベルがありません。 ボリューム シリアル番号は F000-02B6 です G:\ のディレクトリ 2011/10/05 15:09 <DIR> . 2011/10/05 15:09 <DIR> .. 2011/07/25 08:23 77 a10.txt 1 個のファイル 77 バイト 2 個のディレクトリ 8,474,652,672 バイトの空き領域 C:\temp>copy g:a10.txt . 1 個のファイルをコピーしました。 C:\temp>type a10.txt > g:b10.txt C:\temp>dir g: ドライブ G のボリューム ラベルがありません。 ボリューム シリアル番号は F000-02B6 です G:\ のディレクトリ 2011/10/07 13:52 <DIR> . 2011/10/07 13:52 <DIR> .. 2011/07/25 08:23 77 a10.txt 2011/10/07 13:53 77 b10.txt 2 個のファイル 154 バイト 2 個のディレクトリ 8,474,570,752 バイトの空き領域 C:\temp>net use 新しい接続は記憶されます。 ステータス ローカル名 リモート名 ネットワーク名 ------------------------------------------------------------------------------- OK G: \\mt7000\share Microsoft Windows Network コマンドは正常に終了しました。 C:\temp>net view \\mt7000 システム エラー 5 が発生しました。 アクセスが拒否されました。 以上、よろしくお願い致します。

  • sylpheedが開始できません。

    Microsoft Windows [Version 10.0.17763.1] (c) 2018 Microsoft Corporation. All rights reserved. C:\z>start /MIN /D "C:\Users\user1\Desktop\Sylpheed-3.7" sylpheed.exe ファイル sylpheed.exe が見つかりません。   ←ないって? C:\z>dir "C:\Users\user1\Desktop\Sylpheed-3.7\sylpheed.exe" ドライブ C のボリューム ラベルがありません。 ボリューム シリアル番号は 202E-7D35 です C:\Users\user1\Desktop\Sylpheed-3.7 のディレクトリ 2018/01/30 18:32 1,435,150 sylpheed.exe ←あるのに 1 個のファイル 1,435,150 バイト 0 個のディレクトリ 25,138,044,928 バイトの空き領域 C:\z>