0
ディレクトリ内に5000個以上のファイルがあります。
最初のパックがフォルダ1内にコピーされ、他の500個のファイルのパック2がフォルダ2などにコピーされるように、これらのファイルを500個のファイルごとに分割して管理したいと考えています。
.batスクリプトを使用できますか?ファイルをグループ化し、番号で分割してフォルダ内にコピーする
ディレクトリ内に5000個以上のファイルがあります。
最初のパックがフォルダ1内にコピーされ、他の500個のファイルのパック2がフォルダ2などにコピーされるように、これらのファイルを500個のファイルごとに分割して管理したいと考えています。
.batスクリプトを使用できますか?ファイルをグループ化し、番号で分割してフォルダ内にコピーする
@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
あなたの状況に合わせてsourcedir
とdestdir
の設定を変更する必要があります。
maxcount
は、グループに割り当てるファイル数を設定します。
必要なCOPYコマンドは、テストのために単なるECHO
です。 コマンドが正しいことを確認したら、をECHO(COPY
からCOPY
に変更して、実際にファイルをコピーします。カウンター
の実行時の値にアクセスする
delayedexpansion
を使用して、宛先ディレクトリ名のグループが完了するたびに、転送回数をカウントし、インクリメント、基本的にレポートメッセージ(例えば。1 file copied
)を抑制するために
>nul
を追加私は間違った何かhttp://pastebin.com/HUYAaNZP私はエコーでテストして、あなたの指示に置き換えられますが、ファイルはフォルダの中に移動されません。しかし、私はバッチコマンドが500個のファイルグループごとに自動的にフォルダを作成することを好みますが、1つずつ作成する必要はありません。可能だ? –申し訳ありませんが、私は目的地のパスを間違っていました。\ temp \ temp2でした。 –
コードが正しいようです。バッチは自動的にディレクトリ "C:\ Users \ Ufficio \ Desktop \ temp2 \ folder1"(あなたの投稿バッチ)または "\ temp \ temp2 \ folder1"(あなたのコメント)を作成する必要があります。 "folder1"は "folder2"などにインクリメントされますコピーされた500ファイルごとに。実際に何が起こったのかを正確に知る必要があるでしょう。これは 'echo 'を残すための理由です(そしておそらく' maxcount'を低い数値にしておきます)。 'copy'は単にコマンドが表示されるように画面に送られます。 – Magoo