Unterordner und deren Inhalt auf eine Ebene kopieren?

726
user9687306

Im Moment habe ich die folgende Struktur

Folder 1\  -Apr2007\folder 1 \folder 2 \folder 3 -May 2007\folder 23 \folder 24 \folder 25 -June 2007 \folder 41 \folder 42 \folder 43  -etc all the way to 2018 

Wie kann ich die Unterordner und ihren Inhalt unter den Monaten kopieren, damit sie sich alle in einem Verzeichnis befinden? Ich habe versucht, den For / f-Befehl zu verwenden, aber ich weiß nicht, wie man zwei Platzhalterzeichen im Befehl angibt. Ich brauche einen Platzhalter für den Monat und auch einen für den Namen des Unterordners, da sie alle unterschiedlich sind.

Ich möchte folgende Ausgabe:

New folder\ folder 1\ folder 2\ folder 3\ folder 23\ folder 24\ folder 25\ folder 41\ folder 42\ folder 43\ 
1
Du fragst also, alle haben ~ `Unterordner mit Namen wie` / folder <##> `, die stattdessen in einen anderen und spezifischen Ordner kopiert werden? Pimp Juice IT vor 6 Jahren 0
Nun, ich möchte den Ordner unter dem Ordner "Month Year" ablegen und ihn mit seinem gesamten Inhalt an einen anderen Ort verschieben. Oder verschieben Sie es um eine Ebene, wenn es einfacher ist. user9687306 vor 6 Jahren 0
Ich dachte an etwas Ähnliches, was AFH in seiner Antwort angab. Probieren Sie es aus und sehen Sie, ob dies für Ihre Bedürfnisse ausreicht. Ich werde kurz darauf zurückkommen, da ich ein Problem habe, an dem ich gerade arbeite. Pimp Juice IT vor 6 Jahren 0

1 Antwort auf die Frage

1
AFH

Sie benötigen lediglich zwei verschachtelte forSchleifen: -

for /d %d in ("\Full\Path\To\Folder 1"\*) do ( cd "%d" & for /d %s in (*) do xcopy /s "%s"\* "\Full\Path\To\New folder\%s"\ ) 

Wenn Sie es in eine Batch-Datei legen, müssen Sie die %Zeichen verdoppeln .

Die Verwendung cdist eine Option, Sie können jedoch auch vollständige Verzeichnispfade verwenden, obwohl für die Definition des Zielpfads eine Variablenanalyse erforderlich ist.

Kann ich ein Varibale für Ordner 1 verwenden? Es gibt ungefähr 60 Ordner und 50 000 Unterordner. Ich möchte keine genauen Ordnernamen im Befehl angeben. user9687306 vor 6 Jahren 0
Ja, natürlich können Sie entweder den Ordnernamen oder den vollständigen Pfad verwenden. In einer Batchdatei kann es sich um einen Parameter handeln, ebenso wie der Zielordner. Möglicherweise möchten Sie Überprüfungen hinzufügen, dass der Zielordner noch nicht vorhanden ist oder wenn Sie in einen vorhandenen Ordner zusammenführen möchten, dass vorhandene Dateien nicht überschrieben werden. AFH vor 6 Jahren 0
Das scheint zu funktionieren. Angenommen, ich müsste 15 000 angegebene Ordner kopieren. Gibt es eine Möglichkeit, eine Liste der zu kopierenden Ordnernamen bereitzustellen, und wenn der Ordnername übereinstimmt, werden diese Ordner kopiert. Ich weiß, dass Sie eine Ausschlussliste mit xcopy verwenden können, aber ich würde eine Einschlussliste anstelle einer Ausschlussliste benötigen, wenn dies sinnvoll ist. user9687306 vor 6 Jahren 0
Ja, Sie können dies tun, indem Sie für jedes Unterverzeichnis ("% s") ein "findstr" hinzufügen, um zu prüfen, ob es sich in der Verzeichnisliste befindet. Sie ändern jedoch Ihre Frage erheblich und ich kann Ihnen nur dann weitere Informationen geben, wenn Sie dies tun viele weitere Details zu dem, was Sie möchten, einschließlich des Formats der Verzeichnisnamenliste. AFH vor 6 Jahren 0
Ich habe eine Ordnerliste als Textdatei, die von einer Software mit einem Ordnernamen in jeder Zeile ohne den Pfad zu jedem Ordner generiert wird. Ich möchte, dass ein Befehl durch diese Textdatei geleitet wird und die entsprechenden Ordner an einen neuen Speicherort kopiert werden. user9687306 vor 6 Jahren 0
Welcher Anteil der Ordner wird in der Liste stehen? Dies bestimmt, ob es effizienter ist, die Liste schrittweise zu durchsuchen und nach jedem Ordner zu suchen oder alle Ordner zu suchen und zu prüfen, ob jeder in der Liste enthalten ist. AFH vor 6 Jahren 0
Der gesamte Ordnername wird in der Liste angezeigt. user9687306 vor 6 Jahren 0
Sie können `for / f" delims = "% d in ('type DirList.txt') verwenden. Xcopy ...`. Sie müssen `% d` im Befehl` xcopy` parsen, je nach Listenformat. AFH vor 6 Jahren 0
Könnten Sie mir weitere Informationen zum Analysieren der Variablen geben? Wie ein Beispiel, wie der ganze Befehl aussieht? user9687306 vor 6 Jahren 0
Geben Sie "für /?" Ein, um eine Liste der Analyseoptionen am Ende des Hilfetexts anzuzeigen. Da Sie kein Beispiel für das genaue Format der Verzeichnislistendatei angegeben haben, kann ich kein nützliches Beispiel für die Analysezeichenfolge angeben, aber Sie sollten in der Lage sein, dies anhand der Informationen für `for /?` Herauszufinden. AFH vor 6 Jahren 0
Die Textdatei würde folgendermaßen aussehen (ein Eintrag pro Zeile, nicht alle nebeneinander): 12134 57896 45789 69875 74514 etc .. Diese Zahlen sind die Ordnernamen und es gibt etwa 15 000 davon. user9687306 vor 6 Jahren 0
Das steht im Konflikt mit Ihrer vorherigen Anweisung: "Der gesamte Ordnername wird in der Liste angezeigt." Sie kennen das Format. Warum können Sie die Antwort nicht anhand der Informationen ermitteln, die Sie jetzt haben? AFH vor 6 Jahren 0
Ich verstehe den Befehl nicht wirklich. Ich starte es und sehe die Ergebnisse, aber ich verstehe es nicht, es alleine zu schreiben. Vielen Dank für Ihre Hilfe, es wird sehr geschätzt. user9687306 vor 6 Jahren 0
Es gelang mir also, es mit diesem Befehl zum Laufen zu bringen: FOR / F% F IN (ordnerliste.txt) DO xcopy / I / E "pathrofoldersource \% F" "pathtocopysource \% F" Gibt es eine Möglichkeit, diesen Befehl anzuwenden? aber ich möchte nur den Ordner auf der untersten Ebene der 2-Ebenen-Suche kopieren? D: \ System \ Jan2018 \ Folder1-120000 D: \ System \ Feb2018 \ Folder1-120000 Also im Grunde möchte ich den Befehl zum Kopieren der in der Textdatei angegebenen Ordner verwenden, die in der Struktur 1-120 000 unter den Monatsordnern aufgeführt sind Ich muss auch eine Variable für den Monatsordner angeben, also etwas ähnliches user9687306 vor 6 Jahren 0
Es sieht so aus, als hätten Sie in Ihrem Kommentar keinen Platz mehr. Ich habe darauf gewartet, dass Sie damit fertig sind: Es macht keinen Sinn, da meine Antwort genau das tut, was Sie wollen, abgesehen von der Textdatei, die Sie seitdem eingeführt haben. Aktualisieren Sie Ihre Frage, um das Format der Textdatei und ihre Beziehung zu den Live-Verzeichnissen zu erläutern. AFH vor 6 Jahren 0