- ベストアンサー
複雑なファイル操作についての質問
- ドライブD内で特定の条件を満たすフォルダを探して移動する方法についての質問です
- PHPを使用して再帰処理を試みましたが、フォルダ数が多くなると制限に達しました
- プログラミングやバッチ処理を利用して、条件に一致するフォルダを特定のフォルダに移動する方法を教えてください
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
バッチファイルでサンプルを作ってみました。 Dドライブルートからファイル名に .jpg が含まれるファイルだけがあるフォルダを moveコマンドで D:\picturefolder へ移動するものです。後ろから2行目内で echo move としているので表示状況をみて希望に添っているようなら echo move → move に変更して試してみてください。(間違うとディレクトリがぐちゃぐちゃになる可能性があるので) No.2にさんが指摘されている隠しファイル、システムファイル等は考慮していません。dir /b で表示されるファイル名から.jpgの文字列の有無で判断しています。 また、ドライブDを網羅して調べる都合上、一度実行したあと再度実行すると、D:\picturefolderを検索してしまうので注意が必要です。色々なフォルダからD:\picturefolderに移動させるため、同じフォルダ名がいろいろな階層にあると上書き確認のメッセージが出てきます。 echo off pushd D:\ for /f "delims=" %%d in ('dir /b /s /a:d') do call :sub "%%d" exit /b :sub for /f "delims=" %%x in ('dir /b %1 ^| find /c ".jpg"') do set jpg_c=%%x for /f "delims=" %%x in ('dir /b %1 ^| find /c /v ".jpg"') do set other_c=%%x :echo %1 :echo %jpg_c% --- %other_c% if %jpg_c% NEQ 0 if %other_c% EQU 0 echo move %1 D:\picturefolder goto :EOF
その他の回答 (2)
- chie65536(@chie65535)
- ベストアンサー率44% (8755/19867)
>画像ファイル(jpgと仮定)以外のファイル及びフォルダを含まないフォルダ(中に画像ファイルしか含んでいないフォルダ)”を探査して たぶん、その検索をしても無意味です。 「画像ファイルしか含まれてないフォルダ」と言うのは、多分、貴方のHDDの中には無いと思います。 見た目に画像ファイルしか入っていないように見えても、フォルダ内には、desktop.ini、Thumbs.dbなどの隠しファイルや、Administrator所有の隠しシステムファイルが存在する可能性が非常に高いです。 desktop.ini、Thumbs.dbなどを無視して(無かった事にして)検索して、何とかしてくれるツールはあるかも知れませんが、流石に「Administratorなど他ユーザーのファイルが、フォルダに混在している場合」には対処できないでしょう。 ぶっちゃけ、コマンドプロンプトで attrib c:\*.* /d /s > filelist.txt って実行して、ハードディスク上の全ファイルのリストfilelist.txtを作成し、エディタでfilelist.txtを開いて「目で確認」するしか方法はありません。 上記コマンドは、隠しファイルもシステムファイルも含めて、Cドライブの全ファイルと全ディレクトリをリストするコマンドです。
- Tacosan
- ベストアンサー率23% (3656/15482)
ちょっと確認したいんですが, たとえば ・フォルダfolderA の中にはフォルダfolderB と画像ファイルのみがある ・その「フォルダfolderA の中のフォルダfolderB」の中には画像ファイルがある という場合にはどうなっていてほしいんでしょうか?
補足
folderAには画像ファイルとフォルダファイルの両方があるので探査には引っかかりません、この場合はfolderBのみが移動されます
お礼
すごいです!ありがとうございます! こんな複雑な処理がcmdで出来るなんて知りませんでした 色々しらべてコードの意味もだいたい分かったので色々改変も出来るようになりました 詳しい説明ありがとうございました