2017-09-30 4 views
0

私は次のバッチファイルコードを持っています。フォルダ内で実行するとファイル拡張子をチェックし、ファイル拡張子に対してフォルダを作成し、最終的にファイルをフォルダ名に拡張子つまり、すべてのgifをその中に移動させるために.gifフォルダを作成し、.jpgフォルダを作成して、すべてのjpgをそれに移動させるなどです。バタフライファイルを作成してそれぞれのフォルダに移動する

私はバッチファイルを作成する専門知識はありませんが、必要なのは、すべてのファイルがすべての画像ファイルが「Images」フォルダに移動するような方法でこのコードを変更することです"ビデオ"のすべてのビデオファイル、ドキュメントフォルダ内のすべてのドキュメントファイル(pdf、docs、xlsなど)、すべてのオーディオファイルは、オーディオフォルダなどにある必要があります...... 誰かが助けることができますか?次のようなカテゴリに関しては種類があるファイル@compo

@echo off 
rem For each file in your folder 
for %%a in (".\*") do (
rem check if the file has an extension and if it is not our script 
if "%%~xa" NEQ "" if "%%~dpxa" NEQ "%~dpx0" (
rem check if extension folder exists, if not it is created 
if not exist "%%~xa" mkdir "%%~xa" 
rem Move the file to directory 
move "%%a" "%%~dpa%%~xa\" 
)) 

: -

Docs 
    .docs,docx,xls,pdf 
Video 
    .avi,.mpeg,.mp4 
Audio 
    .mp3,.wma 
Image 
    .jpg,.bmp,.gif 

等々......

カテゴリ名、実際にフォルダ名必要があります。

+0

の後にスペースがありますことを確認し、あなたが一緒に読み込むためのテキストファイル内のペアとしてカテゴリとファイルタイプのリストを提供しなければなりませんあなたのスクリプトの側面。 'Documents、.docx'と' Pictures、.psd'の行に沿って、別の行にある各エントリ。 _(各ペアをカンマで区切ります)_。リストを作成したら、ここに[編集](https://stackoverflow.com/posts/46502116/edit)として質問に投稿してください。 – Compo

答えて

0

リスティングが小さいので、おそらくだけではなく、別のファイルのスクリプトファイルに情報を追加することができます。

@For /F "Tokens=1*Delims=:" %%A In ('FindStr/B : %0' 
) Do @RoboCopy/MOV . "%%A"%%B>Nul 
@Exit/B 

:Docs: *.doc *.docx *.xls *.pdf 
:Video: *.avi *.mpeg *.mp4 
:Audio: *.mp3 *.wma 
:Image: *.jpg *.bmp *.gif 

編集必要に応じて最後の4行を、 これは自明である必要があります。

編集

別のファイルを使用して、FileCats.txt

Docs: *.doc *.docx *.xls *.pdf 
Video: *.avi *.mpeg *.mp4 
Audio: *.mp3 *.wma 
Image: *.jpg *.bmp *.gif 

...とバッチファイル、分類。CMD

@For /F "UseBackQTokens=1*Delims=:" %%A In ("FileCats.txt" 
) Do @RoboCopy/MOV . "%%A"%%B>Nul 

それを行うには:

+0

ありがとうございました。あなたの言葉から、バッチファイルでファイルを読むことができることを理解できます。本当ですか?ファイルからファイルタイプを読み込む際にこのコードを変更する必要がある場合は、どうすればよいでしょうか? – Fundi

+0

** Edit ** – Compo

+0

と別ファイルバージョンを追加StackExchangeネットワークでは、メンバーが質問に対する回答を受け取ったときに、[回答を受け入れる]オプションがあります(https://stackoverflow.com/help/someone -answers)。あなたが他の人の回答を受け入れた後に私にさらに質問したことを考えれば、最初にマークされた回答が最も適切かどうかを検討してください。詳細については、[回答の受け取りはどのように受け付けますか?](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)を参照してください。ありがとうございました。 – Compo

0
@echo off 

for %%s in (Images Videos Docs Audio) do md .\%%s 2>nul 

rem For each file in your folder 
for %%a in (".\*") do (
set "moved=" 
rem check if the file has an extension and if it is not our script 
if "%%~xa" NEQ "" if "%%~dpxa" NEQ "%~dpx0" (

    for %%s in (pdf doc xls) do if /i "%%~xa"==".%%s" set "moved=Y"&move "%%a" ".\Docs\" 
    for %%s in (mpg avi) do if /i "%%~xa"==".%%s" set "moved=Y"&move "%%a" ".\Videos\" 
    IF NOT DEFINED moved (

    rem check if extension folder exists, if not it is created 
    if not exist "%%~xa" mkdir "%%~xa" 
    rem Move the file to directory 
    move "%%a" "%%~dpa%%~xa\" 

) 

) 
) 

注:MD ... 2>nulは(それがすでに存在するため)ディレクトリが作成できないエラーメッセージを抑制し

まず、コレクションを保持するディレクトリを作成します。各ファイルに対して

は、最初movedに何設定されていない(すなわち。「クリア」それは未定義ですので)

その後のリストに対して、大文字と小文字を区別しない方法で、拡張子を(/ I)をチェックコレクションに配置される拡張機能一致するものが見つかった場合は、movedに何らかの値(Yなど)を設定し、該当するコレクションに移動します。すべてのコレクションリストが検査されたら、movedがまだ `でない場合は定義されていません。)、ファイルを拡張子で指定されたディレクトリに移動します。

(未テスト)

+0

私は自分のニーズに合わせて修正しましたが、私はバッチファイルを書く専門知識がないので、本当に欲しいと思っています。私は少しでも管理しています。助けてくれてありがとう。 – Fundi

関連する問題