Wie verwende ich Robocopy mit einer großen Anzahl ausgeschlossener Dateien?

10

Ich möchte Robocopy verwenden, um eine große Anzahl von Dateien zu verschieben, mit Ausnahme derjenigen, die sich in einer Whitelist befinden. Die Whitelist enthält ungefähr 150 Dateien mit unterschiedlichen Namen. Wenn ich die Dateinamen der Whitelist kopiere und in die Befehlszeile einfüge (mithilfe des /xfParameters), schneidet Robocopy die Liste ab.

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 sind die Dateien in der Whitelist handverlesen und können nicht durch Platzhalter gefiltert werden.

Gibt es eine Möglichkeit, dies zu umgehen?

Fuzzy Purple Monkey
quelle

Antworten:

13

In Windows ist die Befehlszeilenlänge begrenzt (ich glaube, es sind ungefähr 2048 Zeichen).

Sie sollten eine Jobdatei mit einer kleinen Teilmenge der angegebenen Ausschlussliste (unter Verwendung des /save:filenameArguments) generieren , um die Syntax abzurufen, die Datei so bearbeiten, dass sie die vollständige Liste enthält, und dann das /job:filenameArgument verwenden, um sie auszuführen.

Die Dokumentation zu diesem Tool finden Sie hier.

Falcon Momot
quelle
0

Es stellt sich heraus, dass die Syntax der Robocopy-Jobdatei nicht so kompliziert ist.

Für Ihre spezielle Situation können Sie das erreichen, was Sie möchten, 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, sieht Ihre Robocopy-Jobdatei folgendermaßen aus:

/XD
exclude1.ext
exclude2.ext
exclude3.ext
....

/XF
file1.ext
file2.ext
file3.ext
....

Mit derselben Logik können Sie alle anderen Optionen von der Befehlszeile in die Jobdatei verschieben.

Fara Importanta
quelle
0

Versuchen Sie, Platzhalter nach dem Dateinamen / XF1 * .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, die Sie ausschließen möchten, ändern, um diese Einschränkung zu umgehen.

Tryp
quelle