- ベストアンサー
ワイルドカードを使わず、複数ファイルを1回で検索する方法はありませんか?
複数のファイルを検索したいのですが、ワイルドカードが使用できない状況です。 (連番が振ってあるファイルから、ある数字がついているファイルを検索したいので) CSVまたはTXTのリストはありますので、それを利用して一発検索(&別フォルダにコピー)したいのですが、そういうことができるソフトってありますでしょうか?(フリーソフトでもそれ以外でも構いません) もしくは、WINDOWSの機能で可能だったりしますでしょうか? 使用OS:WINDOWS XP 詳しい状況: フォルダABC内にあるファイルは以下(約15000個) D-001.jpg、D-002.jpg、D-003.jpg、D-004.jpg、D-005.jpg、D-006.jpg、D-007.jpg、D-008.jpg、… …D-101.jpg、D-102.jpg、D-103.jpg、D-105.jpg、D-109.jpg、D-110.jpg、… 検索&コピーしたいファイルの例 D-001.jpg、D-007.jpg、D-008.jpg、D-009.jpg、D-110.jpg、D-111.jpg、D-112.jpg フォルダABC内のファイルは増減があります。 検索&コピーしたいファイルも、その時々で変わります。 なお、フォルダは社内サーバ内にあり、インターネット上からは操作不可です。 今は目で見ながら移動させているので、やたら時間がかかっているので…どうにかしたいのです。 ご助言いただければ幸いです。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
for は意外といろんなことができるので使いこなせると便利. 例えば「files.txt」というファイルに D-001.jpg D-007.jpg .... とあるなら, for /F "delims=" %f in (files.txt) do echo %f で「%f に各行を入れながら順に実行する」という操作ができます. つまり, 今の例だと echo D-001.jpg echo D-007.jpg のように順に実行されます. だから for /F "delims=" %f in (files.txt) do copy "%f" 20090408 で OK. ちなみにバッチファイルやスクリプトにする場合には % をもう 1つ重ねて %%f などとする必要があるのでそこだけは注意.
その他の回答 (2)
- kent85
- ベストアンサー率52% (38/73)
#1 さんの補足です。 一回うまくいったら BAT にすれば、誰でも簡単に 作業が出来るようになる気がします。 日付でディレクトリ作成して、そこにコピーでいいかと。
補足
バッチは確かに便利そうです。 しかし#1さんの補足に書きましたがfor文がニントモカントモ…。 とりあえず下記のような原始的なやり方でやってみようかと思ってます。(これだけでも、処理にかかる時間は格段に違うんですが!) ファイルコピー.bat 「COPY D-001.jpg 20090408 COPY D-007.jpg 20090408 COPY D-008.jpg 20090408 …」 (20090408がフォルダ名)
- Tacosan
- ベストアンサー率23% (3656/15482)
その「CSV または TXT のリスト」というのが「1行にファイル名が 1個ずつ書かれたファイル」であれば, for でぐるぐる回すだけ. コマンドプロンプトで 1行叩けば OK.
補足
コマンドプロンプトで出来るとは!目からウロコでした。 「1行にファイル名が 1個ずつ書かれたファイル」そのとおりです。 …でもfor文が良く解らないのでちょっとこれから修行しなきゃあ。
お礼
で き ま し た … ! for /F "delims=" %f in (files.txt) do copy "%f" 20090408\ と、最後に「\」をつけないと駄目だったんですが、これで上手くできました! 具体例をいただけたので助かりました! 業務の合間に少しだけ他サイトで勉強したのですが、コマンドパラメータとか%変数とかの言葉が???だったのです…。 バッチやスクリプトについてはなおさら、勉強が必要なのでこれからの課題にします。頑張ります。 有難うございました!