Ich habe mehr als 5000 Dateien in einem Verzeichnis.
Ich möchte diese Dateien 'Splitting' alle 500 Dateien verwalten, so dass das erste Paket innerhalb Ordner1 kopiert wird, wird Pack2 von anderen 500 Dateien in Ordner2 kopiert und so weiter.
Welche .bat Skript kann ich verwenden?Dateien gruppieren und nach Zahlen aufteilen und in Ordner kopieren
0
A
Antwort
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
Sie müssten die Einstellungen von sourcedir
und destdir
ändern, um Ihre Umstände anzupassen.
maxcount
legt die Anzahl der Dateien fest, die einer Gruppe zugewiesen werden sollen.
Die erforderlichen COPY-Befehle sind lediglich ECHO
für Testzwecke. Nachdem Sie überprüft haben, dass die Befehle korrekt sind, ändern Sie ECHO(COPY
zu COPY
, um die Dateien tatsächlich zu kopieren. Anfügen >nul
zu Berichtnachrichten unterdrücken (zB. 1 file copied
)
Im Wesentlichen zählen die Anzahl der Transfers und erhöhen das Ziel-Verzeichnisname jedes Mal eine Gruppe abgeschlossen ist, delayedexpansion
mit Hilfe der Laufzeitwerte der Zähler zuzugreifen
Ich falsches etwas http://pastebin.com/HUYAaNZP Ich teste vorher mit echo und sie ersetzen mit Ihrer Angabe, aber Dateien werden nicht innerhalb des Ordners verschoben. Allerdings bevorzuge ich diesen Batch-Befehl automatisch Ordner für jede 500 Dateien Gruppe erstellen, ohne dass ich eins nach dem anderen erstellen muss. Ist möglich? –
Sorry, ich verwechsle den Zielpfad. Es war \ temp \ temp2 .. –
Der Code scheint korrekt zu sein. Der Stapel sollte automatisch die Verzeichnisse "C: \ Benutzer \ Ufficio \ Desktop \ temp2 \ folder1" (Ihr veröffentlichter Stapel) oder "\ temp \ temp2 \ folder1" (Ihr Kommentar) erstellen. "Folder1" wird in "folder2" usw. erhöht für jeweils 500 kopierte Dateien. Ich müsste genau wissen, was eigentlich passiert ist, dass du nicht erwartet hast zu debuggen. Dies ist der Grund dafür, das 'echo (' an Ort und Stelle zu lassen (und möglicherweise 'maxcount' bei einer niedrigen Zahl zu lassen) - die' Kopie' wird einfach zum Bildschirm gesendet, so dass Sie sehen können, ob der Befehl korrekt ist. – Magoo