• ベストアンサー

ファイル名から判断し指定のフォルダにコピーする方法

みなさま お世話になります。 BatやVBSを使用して ファイル名から判断して指定のフォルダにコピーする方法についてご教授下さい。 環境・実行内容は下記になります。 【OS】 Windows7 【環境】 <コピー元> フォルダ:C:\画像 ファイル:tokyo_yyyymmddhhmmss.jpeg ~ okinawa_yyyymmddhhmmss.jpeg (各県の画像が数枚保管されています) <コピー先> 親フォルダ:D:\画像\VMD 子フォルダ:01_東京 ~ 47_沖縄 【実行内容】 コピー元フォルダに保存されている各県のファイルから判断し、コピー先の子フォルダにコピーしたい。 例) C:\画像\tokyo_yyyymmddhhmmss.jpeg ↓ D:\画像\VMD\01_東京 他不足情報がありましたらご指摘下さい。 よろしくお願い致します。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.1

tokyoと東京などの対応表は内部に持たないといけないというのはいいですよね? cd /d C:\画像 for %%F in (*.jpeg) do call :sub %%F goto :EOF :sub set F=%1 if not "%F%"=="%F:tokyo=%" copy %F% D:\画像\VMD\01_東京\ 。。。。。。 if not "%F%"=="%F:okinawa=%" copy %F% D:\画像\VMD\47_沖縄\ goto :EOF

Uni8500
質問者

お礼

notnotさん ご回答ありがとうございました。 理想どおりの動作になりました! こういう考え方があるんだなぁと、とても勉強になりましたm(_ _)m

関連するQ&A

  • XCOPYで指定したフォルダとファイルをコピーしたい

    C:\AAAフォルダとC:\AAA以下のファイルをコピーしたくて、 XCOPY C:\AAA D:\BBB /E とすると、コピー先のD:\BBBにはAAAフォルダにあるファイルはコピーされるのですが、AAAフォルダそのものはコピーされません。 XCOPY C:\ D:\BBB /E とすればコピーできるのですが、そうするとC:\のほかのフォルダもコピーされてしまいます。 EXCLUDEオプションを使うには指定するファイルが多いため、あまり使いたくありません。(コピーする前にMDでコピー先にAAAフォルダを作成するのもなるべく避けたい) 知っている方がいらしたら教えて下さい。

  • 同一フォルダー内でファイルをコピー名前が変わらない

    Windows 7を使用しています。先週までは同一フォルダー内でファイル・フォルダーを「コピー」・「貼り付け」を実行すると元の名前の後ろに「-コピー」が付いていましたが昨日同じ動作を行いましたが「-コピー」がつかなくなりました。なにが原因でしょうか

  • エクセルVBAでセルにあるファイル名のファイルを同じくセルにあるフォルダ名のフォルダにコピー

    お世話になります。 絶対パスがあり、コピー元、コピー先(格納先)としてシート上の操作で ファイルをフォルダにコピーしたいのですが、VBAでできるでしょうか? ・B列B6以下にコピー元のファイル名(絶対パス) ・D6に格納先のフォルダ名(絶対パス) があります。 この条件だけでコピー→格納するコードを教えていただけたら助かります。よろしくお願いします。

  • フォルダーをバックアップでコピーしたら件数が減った

    PCからJPEGやMP3その他の拡張子のファイルをまとめてUSBメモリーにコピーしたが、元フォルダーのファイル数とコピーしたフォルダーのファイル数が合いません。何故ですか?大切なファイルが漏れてたら困るのですが・・・

  • フォルダのコピーについて

    Dドライブに保存したデータを外付けのハードディスクにコピーする時に、同名のファイルやフォルダがあると毎回「上書きしますか?」 と聞かれるんですが、元のフォルダに新しく保存したデータだけコピーするにはどうしたらよいでしょうか? 例えば、Dドライブにa,b,c,d,e,f,gとファイルがあるとします。 外付けにはa,b,c,dはすでにコピーしてありますが、e,f,gはまだしていません。この状態でe,f,gだけコピーするやり方を教えて頂きたいのですが…すべて上書きだととても時間がかかってしまうし、単純に新しいデータだけ選択してコピーすればいいんですが、フォルダの中身コピー元とコピー先でがバラバラに並んでいるので抽出するのが大変なので… どなたかよろしくお願いします。

  • バッチファイルにて指定フォルダごとコピーする方法

    バッチファイル初心者の為ご教授をお願いします。 Cドライブ直下に下記のようなフォルダがあります。 (それぞれのフォルダ内には沢山のフォルダやファイルが保存されています) 0001_2016_04_29 0001_2016_06_29 0001_2016_07_14 0002_2016_06_29 0002_2016_07_14 0002_2016_07_25 これをFドライブ(USBHDD)へフォルダ毎コピーしたいと思います。 XCOPYもしくはROBOCOPYでワイルドカードを使用しコピー出来ないでしょうか? Fドライブへは差分で保存し続けたいのでミラーは使用出来ません。 自分なりにしらべて下記のように記述してみたのですがうまくいきませんでした。 for /D %%A in (C:\0001*) do xcopy %%A /e F:\.

  • 複数のフォルダから指定するファイルをコピー

    こんばんは。宜しくお願いします。 ◇行いたいこと 複数のフォルダ(例:"D:\AB" "D:\CD" "D:\EF")に格納されているファイルの中から指定した 日付を含んだファイルをコピーし、あるフォルダに張り付けたい。 (指定する日付を含んだファイルがすべてのフォルダに存在するとは限らない) ◇現時点でのソース ※エラー処理の未実装部分については無視していただいてけっこうです。 Dim fs Dim msg Dim f Const copyFrom = "D:\AB" Const copyTo = "D:\VBS\コピー先\" Do '日付入力のインプットボックスを出力 hizuke = InputBox("日付を入力してください。" & vbCr & vbCr & "例)2000-01-01") 'インプットボックスの入力値が空白である If hizuke = "" Then '日付入力を促すメッセージ出力 MsgBox "日付を入力してください。" Exit Do End If 'インプットボックスの入力値が10文字である If Len(hizuke) = 10 Then 'エラーが発生しても次の処理をすすめる On Error Resume Next '指定した日付の確認ダイアログを表示 msg = MsgBox(hizuke & "でよろしいですか?", vbYesNoCancel) '日付の確認ダイアログでYesを選択 If msg = vbYes Then 'ファイルオブジェクトを作成 Set fs = CreateObject("Scripting.FileSystemObject") 'コピー元フォルダに存在するファイルを読み込む For Each f In fs.GetFolder(copyFrom).Files '指定した日付を含むファイル名を検索 If InStr(f.Name, hizuke) > 0 Then '未実装 ファイルの上書き処理 fs.CopyFile 'コピー元 コピー先 Exit Do '未実装 Else Ifの処理 End If Next '未実装 Else Ifの処理 End If '未実装 Else Ifの処理 End If Loop 以上です。ご教授宜しくお願いします。

  • 名前の付いたフォルダやファイルだけをコピー・・・?

    出来なければ諦めますがもし出来るのなら教えて~ データが保存されているドライブにある フォルダやファイルの中にあるデータを動かさないで(コピーや移動させずに) 名前の付いたフォルダやファイルだけを別のドライブにコピーすることは出来ないでしょうか? バックアップする時に元ドライブから別のドライブに 元ドライブの名前の付いているフォルダやファイルをコピーしてから 必要なデータだけを別のドライブにコピーもしくは移動させたいので。

  • Perlで異なるフォルダからファイルをコピーし、ファイル名を変更する方法を教えてください

    前回類似するお願いをしたのですが、 もう一度ご質問させてください。 <やりたいこと> c:\scriptフォルダにある「copyAndRename.cgi」を  起動し、ファイルコピーとRenameをする処理を  行ないたい。 <ファイルコピーの内容> C:\test1フォルダにあるファイル名「test.test.csv」 を、c:\test2フォルダにコピーする <ファイルRenameの内容> C:\test2フォルダにコピーした、ファイル 名「test.test.csv」の「.」をなくし「-」を置き換え、「test-test-csv」とファイル名に変更する処理をしたい。 <できていること> (1)の処理は行なえているので問題ありません。 (2)の処理に関しては、以前の質問させていただいた  回答から、下記のようなスクリプトを書き、実行した  が、Renameされませんでした。 ----- $A="test.test.csv"; $B=$A; $B=~s/\./-/; # ドットを全置換により[-]に変更。 rename $A,$B; ----- 実行している、「copyAndRename.cgi」が格納されている c:\svriptフォルダに、「test.test.csv」をおいて テストをしてみると正常に起動します。 renameを行なう際のパスの切り方がわかれば 解決できると思うのですが、わかりません。 初心者の質問で恐縮ですが、どなたかお教えください。

    • ベストアンサー
    • CGI
  • フォルダー名がファイル名になるフリーソフト

    たくさんの画像フォルダとその中にそれぞれ大量の画像ファイル(jpeg)があります。 一括してファイル名変換するソフトの中で、 フォルダ名をファイル名+ナンバーに一括変換するフリーソフトは、ないものでしょうか。 少し、特殊なファイル名変換です。 Windows7で動くとありがたいです。 よろしくお願いします。