- ベストアンサー
ファイル名の自動振り分けについて
- ファイル名を該当フォルダ内から検索して移動する方法について教えてください。
- 手動でファイルの振り分けをしているのですが、バッチファイルを使用して自動的に振り分けられるようにしたいです。
- 検索してファイルが見つからなければ振り分けないようにする方法も教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ご指摘の点、対応してみました。お試し下さい。 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
その他の回答 (2)
- pita-gora
- ベストアンサー率70% (102/145)
こんにちは。振り分けフォルダから整理済みフォルダ(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
お礼
考えてくださり、ありがとうございます。 ですが、ファイルパスの部分だけいじったところ 振り分け終了しましたの文言が出てもファイルの移動までしてくれませんでした。 また、ファイル名に () ←半角の括弧がある場合も多数あるのですが、 【AA】 [BB] CC (DD) EE.txt といったファイル名だった場合、 EE.txt') の使い方が誤っています。 といった具合に)から後ろの部分が間違っていると言われ弾かれてしまいます。 □□の部分はワイルドカードでできると思ってたので特に条件にあげていなくてすみませんでした。 弾かれないファイルを1つだけで試してみても移動しなかったのでこれだけが原因ではないと思います。 他にもやり方を変えてはみたのですがやはり自分には手に負えなかったので どうかもう少しお力をお貸しください。よろしくお願いいたします。
- salsberry
- ベストアンサー率69% (495/711)
C:\とかバッチファイルという記述から判断してきっとWindowsの話なんだと思いますが、Windowsに標準で含まれるコマンドだけを使ってバッチでその処理を実現するのは難しそうです。
補足
環境書いてなかったですね。失礼しました。OSはWindowsXPです。 XPで動けばなんでもかまわないので何かないでしょうか? よろしくお願いします。
お礼
動きました。非常に助かります!どうもありがとうございました!!!