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

解決済みの質問

ファイル名を該当フォルダ内から検索して移動

ファイルの振り分けを手動でしているのですが、
手動は大変なのでバッチファイルで自動的に振り分けられるようにしたいです。

C:\振り分け というフォルダがあり、そこにあらかじめ、
【○○】 [△△] □□.txt
といった形式にファイル名をリネームしたファイルを移動しておきます。

過去に整理したファイル達がそれぞれA、B、Cフォルダに入っているとします。
振り分けフォルダのファイル名の先頭から "△△]" の部分まで取得した後、
A、B、Cフォルダの中身をそれぞれ検索して、検索条件に一致したファイルがあったのと
同じフォルダにファイルを自動的に振り分けられるようにしたいです。
また、検索してファイルが見つからなければ振り分けないようにしたいです。
よろしくお願いいたします。

投稿日時 - 2011-07-06 16:48:45

QNo.6858298

困ってます

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

ご指摘の点、対応してみました。お試し下さい。

echo off
set from=C:\振り分け
set to=C:\整理済

for /f "delims=" %%a in ( 'dir /b "%from%\*.txt"' ) do call :sub "%%a"
echo 振り分け終了しました
exit /b

:sub
for /f "tokens=1 delims=]" %%f in ( "%~n1" ) do set findname=%%f]

:FolderA
if exist "%to%\A\%findname%*" move "%from%\%~nx1" "%to%\A\"&&goto :EOF

:FolderB
if exist "%to%\B\%findname%*" move "%from%\%~nx1" "%to%\B\"&&goto :EOF

:FolderC
if exist "%to%\C\%findname%*" move "%from%\%~nx1" "%to%\C\"

goto :EOF

投稿日時 - 2011-07-23 14:31:46

お礼

動きました。非常に助かります!どうもありがとうございました!!!

投稿日時 - 2011-07-27 10:02:43

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

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

回答(3)

ANo.2

こんにちは。振り分けフォルダから整理済みフォルダ(C:\整理済)配下のA,B,Cフォルダへ振り分けるバッチファイルを作ってみました。
例としている【○○】 [△△] □□.txtですが、】や]のあとに半角空白が入っていますが入っている前提でよろしいですね。

A,B,Cの順で見つかった時点で振り分けしますので、複数一致しても最初のフォルダだけ処理します。

echo off
set from=C:\振り分け
set to=C:\整理済

for /f "delims=" %%a in ( 'dir /b %from%\*.txt' ) do call :sub "%%a"
echo 振り分け終了しました
exit /b

:sub
set org=%1
for /f "tokens=1 delims=]" %%f in ('echo %~1') do set findname=%%f]

:FolderA
if exist "%to%\A\%findname%*" move "%from%\%~nx1" "%to%\A\"&&goto :EOF

:FolderB
if exist "%to%\B\%findname%*" move "%from%\%~nx1" "%to%\B\"&&goto :EOF

:FolderC
if exist "%to%\C\%findname%*" move "%from%\%~nx1" "%to%\C\"

goto :EOF

投稿日時 - 2011-07-19 22:16:21

お礼

考えてくださり、ありがとうございます。
ですが、ファイルパスの部分だけいじったところ
振り分け終了しましたの文言が出てもファイルの移動までしてくれませんでした。


また、ファイル名に () ←半角の括弧がある場合も多数あるのですが、
【AA】 [BB] CC (DD) EE.txt
といったファイル名だった場合、
EE.txt') の使い方が誤っています。
といった具合に)から後ろの部分が間違っていると言われ弾かれてしまいます。
□□の部分はワイルドカードでできると思ってたので特に条件にあげていなくてすみませんでした。


弾かれないファイルを1つだけで試してみても移動しなかったのでこれだけが原因ではないと思います。
他にもやり方を変えてはみたのですがやはり自分には手に負えなかったので
どうかもう少しお力をお貸しください。よろしくお願いいたします。

投稿日時 - 2011-07-20 21:46:44

ANo.1

C:\とかバッチファイルという記述から判断してきっとWindowsの話なんだと思いますが、Windowsに標準で含まれるコマンドだけを使ってバッチでその処理を実現するのは難しそうです。

投稿日時 - 2011-07-08 22:58:44

補足

環境書いてなかったですね。失礼しました。OSはWindowsXPです。
XPで動けばなんでもかまわないので何かないでしょうか?
よろしくお願いします。

投稿日時 - 2011-07-09 00:35:56

あなたにオススメの質問