Verschiebe alle Dateien außer einem (Dateimuster) von einem DOS-Befehl

7

Von einem DOS-Befehl möchte ich alle Dateien verschieben, die nicht mit einem Dateinamenmuster übereinstimmen. Etwas wie das:

Zum Beispiel möchte ich alle Dateien verschieben, die nicht mit "aaa"

beginnen %Vor%     
eze1981 04.11.2010, 15:46
quelle

5 Antworten

13

XCOPY wurde für die Verwendung mit exclude -Listen entworfen ... Siehe unten:

%Vor%

Die erste Zeile führt eine Verzeichnisliste DIR (Verzeichnis) des Ordners source aus, in der die Dateien im leeren Format ( / b ) aufgeführt sind Namen ( / ad ). Die Ausgabe wird an den Befehl FINDSTR weitergeleitet.

FINDSTR betrachtet jeden Dateinamen und vergleicht seinen Anfang ( / b ) mit der Zeichenfolge " aaa ".

Wenn der Beginn eines Dateinamens mit der Zeichenfolge " aaa " übereinstimmt, wird der Dateiname in die Datei aaafiles.tmp in den Benutzern TEMP umgeleitet (geschrieben) Verzeichnis.

Das / b ist wichtig, weil Sie keine Dateien wie theaaafile.txt ausschließen möchten.

Der Befehl XCOPY kopiert Dateien aus dem Ordner source in den Ordner destination mit Ausnahme von Dateien, die in aaafiles.tmp .

Die Option zum Überschreiben vorhandener Dateien ( / y ) wird deaktiviert.

Quelle und Ziel müssen Ihre eigenen Ordnernamen ersetzt werden.

    
Paul Tomasi 19.12.2010, 10:15
quelle
4

Sie können beispielsweise eine Liste der Dateien erstellen, die in einer temporären Datei verschoben werden sollen. Verwenden Sie dann die Datei mit dem Befehl for . Generiere die Liste mit findstr .

%Vor%

Der erste Befehl ruft eine Liste aller Dateien (ohne Verzeichnisse) im aktuellen Verzeichnis ab und übergibt die Liste dann an findstr , wodurch ( /v ) Dateinamen, die dem Muster entsprechen, ausgeschlossen und in die Datei% co_de eingefügt werden % im temporären Verzeichnis Der zweite Befehl nimmt nur diese Ergebnisse, so dass Sie tun können, was Sie mit ihnen tun werden (verschieben Sie es).

Es gibt wahrscheinlich einen besseren Weg, dies in einem einzigen Befehl ohne die temporäre Datei zu tun, ich weiß einfach nicht, wie ich es schreiben soll. Ich bin mir nicht sicher, wie ich den Befehl @movelist im Befehl dir aufrufen soll. AFAIK es braucht nur Programmdateien, die existieren, keine eingebauten Befehle.

    
Jeff Mercado 05.11.2010 04:38
quelle
4

Robocopy ist eine Möglichkeit

%Vor%

für Optionen siehe hier Ссылка

    
Gregory Adam 06.05.2014 09:58
quelle
3

Wenn es Ihnen nichts ausmacht, mit dem Archivbit zu spielen, können Sie es verwenden, um Dateien basierend auf einer Dateimaske selektiv zu kopieren und zu löschen.

Verschieben (kopieren und löschen) Sie alle Dateien mit Ausnahme derer, die mit "aaa" beginnen, vom aktuellen Verzeichnis in "dest". Kann auch den vollständigen Quellpfad angeben.

%Vor%     
user1054300 18.11.2011 18:07
quelle
2

In einigen Fällen kann es einfacher gemacht werden. Zum Beispiel musste ich rekursiv eine Reihe von Verzeichnissen kopieren, aber alle Bilder (PNG- und BMP-Dateien) ausschließen, sodass ich einfach eine excludeList.txt -Datei mit folgendem Inhalt erstellte:

%Vor%

und run

%Vor%

Es wird mit jeder Datei oder jedem Verzeichnis übereinstimmen, die .png , aber nicht unbedingt Ende von .png enthalten. (Ich habe nicht untersucht, ob eine intelligente Verwendung von Platzhaltern oder regulären Ausdrücken möglich ist). Es behandelt nicht Ihr spezielles Beispiel (für das Sie bereits eine gute Antwort haben), aber es hat mein Problem gelöst, und diese Seite habe ich gefunden, als ich auf der Suche nach einer Lösung gegoogelt habe:)

    
Antonio 19.03.2014 10:08
quelle

Tags und Links