Datei in Unterordnern ersetzen.
Hallo zusammen,
ich versuche mich gerade an einer Batch-Datei um eine Datei in verschiedenen Unterordnern zu ersetzen.
Ich hätte also die Datei "test.xls" und diese möchte ich mit "test2.xls" ersetzen. Die "test.xls" liegt in unterschiedlichen Ordnern (C:\Test\Unterordner1\Unterordner 2\test.xls aber auch in C:\Test\Unterordner3\Unterordner 4\test.xls etc.). Ich habe folgenden Code gefunden:
for /F "delims=;" %f in ('dir /S /B C:\Test\*\test.xls') do copy "C:\datei\test2.xls" "%f" /Y
Leider geht diese Code nicht, bzw. ich bekomme ihn nicht dazu. Kann ich bei " * " etwas setzen, damit alle Unterordner nach dieser Datei durchsucht werden? Jedoch klappt es im Moment gar nicht. Selbst wenn ich den Pfad absolut hinschreibe:
for /F "delims=;" %f in ('dir /S /B "C:\Test\Unterordner1\Unterordner 2\test.xls"') do copy "C:\datei\test2.xls" "%f" /Y
Ich denke es hängt mit den "" zusammen, aber die brauche ich doch wenn ich ein Leerzeichen im Ordnernamen habe, oder?
Ich hoffe mir kann jemand helfen und ich muss nicht alle 300 Dateien von Hand ersetzen...
Gruß,
Groja2
ich versuche mich gerade an einer Batch-Datei um eine Datei in verschiedenen Unterordnern zu ersetzen.
Ich hätte also die Datei "test.xls" und diese möchte ich mit "test2.xls" ersetzen. Die "test.xls" liegt in unterschiedlichen Ordnern (C:\Test\Unterordner1\Unterordner 2\test.xls aber auch in C:\Test\Unterordner3\Unterordner 4\test.xls etc.). Ich habe folgenden Code gefunden:
for /F "delims=;" %f in ('dir /S /B C:\Test\*\test.xls') do copy "C:\datei\test2.xls" "%f" /Y
Leider geht diese Code nicht, bzw. ich bekomme ihn nicht dazu. Kann ich bei " * " etwas setzen, damit alle Unterordner nach dieser Datei durchsucht werden? Jedoch klappt es im Moment gar nicht. Selbst wenn ich den Pfad absolut hinschreibe:
for /F "delims=;" %f in ('dir /S /B "C:\Test\Unterordner1\Unterordner 2\test.xls"') do copy "C:\datei\test2.xls" "%f" /Y
Ich denke es hängt mit den "" zusammen, aber die brauche ich doch wenn ich ein Leerzeichen im Ordnernamen habe, oder?
Ich hoffe mir kann jemand helfen und ich muss nicht alle 300 Dateien von Hand ersetzen...
Gruß,
Groja2
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 222623
Url: https://administrator.de/forum/datei-in-unterordnern-ersetzen-222623.html
Ausgedruckt am: 21.04.2025 um 20:04 Uhr
6 Kommentare
Neuester Kommentar
Sag mal, Variable werden aber nicht in Hochkomma gesetzt, nur Pfade mit Leerzeichen. PFade ohen Leerzeichen gehen auch.
Und dann gibt es noch das Sternchen am Anfang der Zeil zwisschen die beiden Tests geklemmt.
Parameter /s beinhaltet Unterverzeichnisse.
Starte im passenden Verzeichnis oder gehe mit einer weiteren Zeile da rein. Sonst passt die Logik nicht.
Gruß
Netman
Und dann gibt es noch das Sternchen am Anfang der Zeil zwisschen die beiden Tests geklemmt.
Parameter /s beinhaltet Unterverzeichnisse.
Starte im passenden Verzeichnis oder gehe mit einer weiteren Zeile da rein. Sonst passt die Logik nicht.
Gruß
Netman
Erklärungen gibt es im cmd Fenster:
I:\Daten\>dir /?
Listet die Dateien und Unterverzeichnisse eines Verzeichnisses auf.
DIR [Laufwerk:][Pfad][Dateiname] [/A[[:]Attribute]] [/B] [/C] [/D] [/L] [/N]
[/O[[:]Folge]] [/P] [/Q] [/S] [/T[[:]Zeit]] [/W] [/X] [/4]
[Laufwerk:][Pfad][Dateiname]
Bezeichnet Laufwerk, Verzeichnis und/oder Dateien.
/A Listet Dateien mit angegebenen Attributen auf.
Attribute D Verzeichnisse R Schreibgeschützte Dateien
H Versteckte Dateien A Zu archivierende Dateien
S Systemdateien - vorangestellt kehrt die Bedeutung um
/B Einfaches Format (keine Kopfdaten, keine Zusammenfassung).
/C Zeigt das Tausendertrennzeichen bei Dateigrößen an (Standard-
einstellung). Verwenden Sie /-C, um das Tausendertrennzeichen
nicht anzuzeigen.
/D Gleich wie Breitformat, jedoch nach Spalten sortiert.
/L Verwendet Kleinschreibung.
/N Neues, langes Listenformat (Dateinamen auf der rechten Seite).
/O Gibt die Liste sortiert aus.
Folge N Name (alphabetisch) S Größe (kleinere zuerst)
E Erweiterung (alphabetisch) D Datum/Zeit (ältere zuerst)
G Verzeichnisse zuerst - vorangestellt kehrt die Reihefolge um
/P Pausiert nach jeder vollen Bildschirmseite.
/Q Gibt den Besitzer der Datei aus.
/S Listet Dateien und alle Unterverzeichnisse auf.
/T Bestimmt welche Zeit verwendet wird (nur für NTFS).
Zeit C Erstellung
A Letzter Zugriff
W Letzter Schreibzugriff
/W Verwendet Breitformat für die Auflistung.
/X Zeigt die Kurznamen für Dateien mit Nicht-8Punkt3-Namen an.
Das Format ist das gleiche wie bei /N, wobei der Kurzname vor
dem Langnamen eingefügt wird. Wenn kein Kurzname vorhanden ist,
werden Leerzeichen angezeigt.
/4 Zeigt das Jahr vierstellig an.
Das gibt es für jeden einzelnen Befehl.
copy /?
I:\Daten\>dir /?
Listet die Dateien und Unterverzeichnisse eines Verzeichnisses auf.
DIR [Laufwerk:][Pfad][Dateiname] [/A[[:]Attribute]] [/B] [/C] [/D] [/L] [/N]
[/O[[:]Folge]] [/P] [/Q] [/S] [/T[[:]Zeit]] [/W] [/X] [/4]
[Laufwerk:][Pfad][Dateiname]
Bezeichnet Laufwerk, Verzeichnis und/oder Dateien.
/A Listet Dateien mit angegebenen Attributen auf.
Attribute D Verzeichnisse R Schreibgeschützte Dateien
H Versteckte Dateien A Zu archivierende Dateien
S Systemdateien - vorangestellt kehrt die Bedeutung um
/B Einfaches Format (keine Kopfdaten, keine Zusammenfassung).
/C Zeigt das Tausendertrennzeichen bei Dateigrößen an (Standard-
einstellung). Verwenden Sie /-C, um das Tausendertrennzeichen
nicht anzuzeigen.
/D Gleich wie Breitformat, jedoch nach Spalten sortiert.
/L Verwendet Kleinschreibung.
/N Neues, langes Listenformat (Dateinamen auf der rechten Seite).
/O Gibt die Liste sortiert aus.
Folge N Name (alphabetisch) S Größe (kleinere zuerst)
E Erweiterung (alphabetisch) D Datum/Zeit (ältere zuerst)
G Verzeichnisse zuerst - vorangestellt kehrt die Reihefolge um
/P Pausiert nach jeder vollen Bildschirmseite.
/Q Gibt den Besitzer der Datei aus.
/S Listet Dateien und alle Unterverzeichnisse auf.
/T Bestimmt welche Zeit verwendet wird (nur für NTFS).
Zeit C Erstellung
A Letzter Zugriff
W Letzter Schreibzugriff
/W Verwendet Breitformat für die Auflistung.
/X Zeigt die Kurznamen für Dateien mit Nicht-8Punkt3-Namen an.
Das Format ist das gleiche wie bei /N, wobei der Kurzname vor
dem Langnamen eingefügt wird. Wenn kein Kurzname vorhanden ist,
werden Leerzeichen angezeigt.
/4 Zeigt das Jahr vierstellig an.
Das gibt es für jeden einzelnen Befehl.
copy /?
Hallo Groja2!
Grüße
bastla
Nur wofür steht das "delims=;" ?
Generell zum Thema gäbe es das Tutorial zur FOR-Schleife von @Friemler; konkret für diesen Fall: Eigentlich wäre es "delims=
" mit dem Sinn, dass die durch den "dir
"-Befehl ausgegebenen Pfade nicht beim ersten auftretenden Leerzeichen abgebrochen werden (Leerzeichen ist, neben TAB, das Standard-Trennzeichen in einer "for /f
"-Schleife) ...Grüße
bastla