アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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

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

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/07/27 10:02

こんにちは。

振り分けフォルダから整理済みフォルダ(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
    • good
    • 0
この回答へのお礼

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


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


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

お礼日時:2011/07/20 21:46

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

この回答への補足

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

補足日時:2011/07/09 00:35
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています