- ベストアンサー
バッチファイルで条件分岐を行う方法
- バッチファイルを使用して、指定したフォルダに複数のファイルを移動する方法について説明します。
- また、拡張子やファイルサイズに応じて異なるフォルダに移動する方法についても解説します。
- バッチファイルを使用することで、効率的にファイルを整理することが可能です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
%~x1 で%1の拡張子のみ取得することが出来ます。 ただし拡張子が小文字か大文字かが不定なので、一工夫が必要です。 %ALP:a=A% とすると、環境変数ALPに含まれるaがAに変換されます。 %~z1 で%1のファイルサイズを取得することが出来ます。 条件分岐は既にお使いのif関数で出来ます。 ということで、戯れに作ってみました。 @Echo Off Set BASE=C:\Documents and Settings\(ユーザー名)\デスクトップ Echo 移動のベースは[%BASE%]です。 Echo. :LOOP If "%~1"=="" Goto ENDP Set EXT=%~x1 If "%EXT%"=="" Goto doNothing Set EXT=%EXT:j=J% Set EXT=%EXT:p=P% Set EXT=%EXT:g=G% Set EXT=%EXT:b=B% Set EXT=%EXT:m=M% Set EXT=%EXT:n=N% if %EXT%==.JPG Goto doJPG if %EXT%==.BMP Goto doBMP if %EXT%==.PNG Goto doPNG REM 拡張子がいずれでもない時の動作 Set MOVED=%~n1\E Goto doMOVE :doNothing REM 拡張子無し時の動作 Set MOVED=%~n1.d\F Goto doMOVE :doJPG REM jpg時の動作 Set MOVED=%~n1\A Goto doMOVE :doBMP REM bmp時の動作 Set MOVED=%~n1\B Goto doMOVE :doPNG if %~z1 LEQ 2097152 Goto doSPNG if %~z1 GTR 2097152 Goto doBPNG :doSPNG REM pngで2M以下の時の動作 Set MOVED=%~n1\C Goto doMOVE :doBPNG REM pngで2Mより大きい時の動作 Set MOVED=%~n1\D Goto doMOVE :doMOVE Echo [%~1]を[%MOVED%]に移動します。 Set MOVED="%BASE%\%MOVED%" If Not EXIST %MOVED% Mkdir %MOVED% Move "%~1" %MOVED% Shift Goto LOOP :ENDP Echo. Echo 移動が完了しました。 Echo 何かキーを押して終了してください。 Pause>NUL Exit /b 0 といった感じになります。 移動先を変える場合は「3行目のBASE=の後を変える」とか 「Set MOVED=%~n1\A みたいなとこを変える」です。 追加機能 ・ディレクトリの自動作成 ・拡張子が想定外の場合の追加(Eに移動) ・拡張子が無かった場合の追加(ファイル名.d\Fに移動)
その他の回答 (2)
- pita-gora
- ベストアンサー率70% (102/145)
作るにあたって以下の条件を知りたいです。 ・ファイルの拡張子がjpg bmp pngでない場合は? ・pngのファイルサイズは最大どれくらいありますか? (どれくらいまで対応しますか) これにさらに というのは、 ・そのファイル名と同名のフォルダ(既に作成済み)の中にある、Aというフォルダの下のA,B,C,Dなのか ・そのファイル名と同名のフォルダ同名のフォルダの中にA,B,C,Dがあるのかどちら?
- ssfja
- ベストアンサー率57% (11/19)
バッチは、文字列切り出しのような構文が無いので、 そういった処理は難しいですね。 vbscript とか jscript を検討してみてはどうでしょう。
お礼
ありがとうございました!
お礼
ありがとうございました!