2016-04-04 7 views
0

ディレクトリ内に5000個以上のファイルがあります。
最初のパックがフォルダ1内にコピーされ、他の500個のファイルのパック2がフォルダ2などにコピーされるように、これらのファイルを500個のファイルごとに分割して管理したいと考えています。

.batスクリプトを使用できますか?ファイルをグループ化し、番号で分割してフォルダ内にコピーする

答えて

0
@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 
SET "sourcedir=U:\sourcedir\t w o" 
SET "destdir=U:\destdir" 
SET /a destcount=0 
SET /a maxcount=5 
SET /a filecount=maxcount 
FOR /f "delims=" %%a IN (
'dir /b /a-d "%sourcedir%\*" ' 
) DO (
SET /a filecount +=1 
IF !filecount! geq %maxcount% (
    SET /a filecount=0 
    SET /a destcount +=1 
    MD "%destdir%\folder!destcount!" 
) 
ECHO(COPY "%sourcedir%\%%a" "%destdir%\folder!destcount!\" 
) 

GOTO :EOF 

あなたの状況に合わせてsourcedirdestdirの設定を変更する必要があります。

maxcountは、グループに割り当てるファイル数を設定します。

必要なCOPYコマンドは、テストのために単なるECHOです。 コマンドが正しいことを確認したら、ECHO(COPYからCOPYに変更して、実際にファイルをコピーします。カウンター

+0

の実行時の値にアクセスするdelayedexpansionを使用して、宛先ディレクトリ名のグループが完了するたびに、転送回数をカウントし、インクリメント、基本的にレポートメッセージ(例えば。1 file copied

を抑制するために>nulを追加私は間違った何かhttp://pastebin.com/HUYAaNZP私はエコーでテストして、あなたの指示に置き換えられますが、ファイルはフォルダの中に移動されません。しかし、私はバッチコマンドが500個のファイルグループごとに自動的にフォルダを作成することを好みますが、1つずつ作成する必要はありません。可能だ? –

+0

申し訳ありませんが、私は目的地のパスを間違っていました。\ temp \ temp2でした。 –

+0

コードが正しいようです。バッチは自動的にディレクトリ "C:\ Users \ Ufficio \ Desktop \ temp2 \ folder1"(あなたの投稿バッチ)または "\ temp \ temp2 \ folder1"(あなたのコメント)を作成する必要があります。 "folder1"は "folder2"などにインクリメントされますコピーされた500ファイルごとに。実際に何が起こったのかを正確に知る必要があるでしょう。これは 'echo 'を残すための理由です(そしておそらく' maxcount'を低い数値にしておきます)。 'copy'は単にコマンドが表示されるように画面に送られます。 – Magoo

関連する問題