
Ich möchte Robocopy verwenden, um eine große Anzahl von Dateien zu verschieben, mit Ausnahme der Dateien, die auf einer Whitelist stehen. Die Whitelist enthält ungefähr 150 Dateien mit unterschiedlichen Namen. Wenn ich die Dateinamen der Whitelist kopiere und in die Befehlszeile einfüge (mit dem /xf
Parameter), kürzt Robocopy die Liste.
c:\test> robocopy src dest *.ext /xf exclude1.ext exclude2.ext exclude3.ext ... exclude 299.ext exclude300.ext
Ergebnisse in:
-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows
-------------------------------------------------------------------------------
Started : Fri May 24 14:09:31 2013
Source : C:\test\src\
Dest : C:\test\dest\
Files : *.ext
Exc Files : exclude1.ext
exclude2.ext
exclude3.ext
....
....
exclude200.ext
exclude201.ext
exclu
und dann:
'exclude250.ext' is not recognized as an internal or external command,
operable program or batch file.
'exclude251.ext' is not recognized as an internal or external command,
operable program or batch file.
'exclude252.ext' is not recognized as an internal or external command,
operable program or batch file.
'exclude253.ext' is not recognized as an internal or external command,
operable program or batch file.
Leider werden die Dateien in der Whitelist handverlesen und können nicht mit Platzhaltern gefiltert werden.
Gibt es eine Möglichkeit, dies zu umgehen?
Antwort1
In Windows gibt es eine Beschränkung für die Befehlszeilenlänge (ich glaube, sie liegt bei etwa 2048 Zeichen).
Sie sollten eine Jobdatei mit einer kleinen Teilmenge der angegebenen Ausschlussliste (unter Verwendung des /save:filename
Arguments) generieren, um die Syntax zu erhalten, die Datei so bearbeiten, dass sie die vollständige Liste enthält, und sie dann mit dem /job:filename
Argument ausführen.
Als Referenz finden Sie die Dokumentation zu diesem Tool hier.
Antwort2
Es stellt sich heraus, dass die Syntax der Robocopy-Jobdatei nicht so kompliziert ist.
Für Ihre spezielle Situation können Sie das gewünschte Ergebnis erzielen, indem Sie eine Robocopy-Jobdatei mit folgendem Inhalt erstellen:
/XD
exclude1.ext
exclude2.ext
exclude3.ext
....
Wenn Sie dasselbe auch für Dateien tun möchten, würde Ihre Robocopy-Jobdatei folgendermaßen aussehen:
/XD
exclude1.ext
exclude2.ext
exclude3.ext
....
/XF
file1.ext
file2.ext
file3.ext
....
Mit der gleichen Logik können Sie alle anderen Optionen von der Befehlszeile in die Jobdatei verschieben.
Antwort3
Versuchen Sie, Platzhalter nach /XF Dateiname1*.ext Dateiname2*.ext Dateiname3*.ext zu verwenden. Dies funktioniert nur, wenn Sie wissen, dass der Dateiname in der gesamten Struktur eindeutig ist. Sie können die Namenskonvention der Dateien ändern, die Sie ausschließen möchten, um diese Einschränkung zu umgehen.