こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

バッチファイルで、ファイル名から自動振分したい

 C:\B\の中に、必ず「半角数字4桁_」から始まるファイル名のデータが毎週入ります。
 「半角数字4桁_」以後のファイル名、拡張子は、その週によって変わります。

 C:\A\の中には、必ず「_半角数字4桁_」で終わるフォルダ名のサブフォルダがあります。
 このフォルダ名は、ずっと変わることがありません。

 C:\B\の中にあるデータを、ファイル名の最初の4桁の数字をもとに、C:\A\にあるサブフォルダに自動で移動したいです。また、移動する際に、既にサブフォルダ内に「半角数字4桁_」から始まるファイル名のデータがある場合は、削除してから移動したいです。


フォルダ構成です。
Cー|
   |-【A】
   |   |-【あいう_1234】
   |  |-【あい_2235】
   |   |-【かきくけ_8990】
   |   |-【アイウエオ_5014】
   |
   |-【B】
   |   |-1234_ABC.txt    ←このファイルは C:\A\【あいう_1234】に。
   |  |-2235_1534.txt   ←このファイルは C:\A\【あい_2235】に。
   |   |-8990_22.doc     ←このファイルは C:\A\【かきくけ_8990】に。
   |   |-5014_わをん.doc   ←このファイルは C:\A\【アイウエオ_5014】に。


 

自分でバッチファイルを記述してみたのですが、ここからどうしていいか分かりません。
 どなたか教えてもらえないでしょうか? よろしくお願いします。
 
 自分で記述してみたバッチファイルです。

cd C:\B

dir /b > C:\C\list.txt

set folder=C:\A
set file=C:\B
set Bat=C:\C

for /f "delims=" %%a in ( %Bat%\list.txt ) do if exist "%file%\%%a" move "%folder%\%%a"

"%to%"


PAUSE > NUL

投稿日時 - 2014-10-01 15:05:24

QNo.8775079

すぐに回答ほしいです

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

Bの中にそれ以外のファイルがないとすると、

cd /d C:\B
for %%A in (*) do call :sub "%%~A"
goto :EOF

:sub
set A=%~1
set B=%A:~0,4%
for /d %%D in (C:\A\*_%B%) do (
del /q "%%D"
move %1 "%%D"
)

>また、移動する際に、既にサブフォルダ内に「半角数字4桁_」から始まるファイル名のデータがある場合は、削除してから移動したいです。

の部分がよくわからなかったので、1ファイル移動する毎にフォルダを空にするようにしています。

投稿日時 - 2014-10-01 20:27:55

補足

回答、ありがとうございます。

>また、移動する際に、既にサブフォルダ内に「半角数字4桁_」から始まるファイル名のデータがある場合は、削除してから移動したいです。

意味が通じる文章でなくて、すみません。

Bフォルダの中に毎週データが入ってくるので、BフォルダからAフォルダのそれぞれのサブフォルダにデータを移動するときは、既に「半角数字4桁_」から始まるファイル名のデータがあるのです。

今までは手動で移動させていたので、新たなファイルをAフォルダのサブフォルダに入れるときは、まず「半角数字4桁_」のデータを消してから、新たなデータを入れています。

Aフォルダのサブフォルダには、「半角数字4桁_」から始まるデータ以外にもデータが入っています。ただし、「半角数字4桁_」から始まる名前のデータは、常に1つだけにしておきたいのです。

よろしければ、それもご教示いただけないでしょうか?

投稿日時 - 2014-10-02 10:19:29

お礼

教えていただいたものでやってみると、うまくいきました。
また、補足コメントで教えていただきたいと書いたことは自己解決できました。

ありがとうございました。

投稿日時 - 2014-10-02 11:54:27

ANo.2

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

フォルダ A の中のサブフォルダの名前が
「_半角数字4桁_」
で終わっていないように見えるのは気のせいだろうか.

さておき, for で delim を適当に設定して (+ さらに必要であればオプションを追加して) 頑張るのが簡単だと思う.

投稿日時 - 2014-10-01 15:43:16

お礼

早速の回答をありがとうございます。
ご指摘のように、Aフォルダの中のサブフォルダの名前が間違っておりました。正しくは「_半角数字4桁」で終わるフォルダ名です。

バッチファイルは見よう見まねで作成しており、どのようにして頑張ればいいのかがわかりません。恐縮ですが、もう少し詳しく教えていただけないでしょうか?

投稿日時 - 2014-10-01 15:56:18

あなたにオススメの質問