groja2
Goto Top

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

Content-Key: 222623

Url: https://administrator.de/contentid/222623

Printed on: April 20, 2024 at 02:04 o'clock

Member: MrNetman
Solution MrNetman Nov 21, 2013, updated at Jul 17, 2014 at 10:52:05 (UTC)
Goto Top
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
Member: bastla
bastla Nov 21, 2013 at 14:32:27 (UTC)
Goto Top
Hallo Groja2 und willkommen im Forum!

Für das Ersetzen gäbe es ja den Befehl "replace" ...

Grüße
bastla
Member: Groja2
Groja2 Nov 21, 2013 at 15:18:08 (UTC)
Goto Top
Hallo MrNetman,
Hallo Bastla,

bin leider neu in der Welt der Batch-Dateien und verstehe es leider noch nicht so gut. Finde leider auch keine gute Website wo es Erklärungen gibt.

@MrNetman: Welche Variable in Hochkomma, %f ? Ok das /S die Unterverzeichnisse beinhaltet wusste ich nicht. Ich habe leider keine Erklärungen gefunden was /F, /S, /B oder /Y heißt... Wie gesagt bin neu auf dem Gebiet und habe versucht etwas gefundenes abzuwandeln...

@bastla: Habe leider keine Website gefunden, welche mir den "replace" Befehl gut erklärt...

Habe es jetzt ein bisschen abgewandelt:

for /F %%f in ('dir /S /B "*test.xls"') do copy C:\datei\test2.xls "%%f" /Y

Geht auch. Nur wenn der Ordnernahme ein Leerzeichen hat geht es leider nicht... Kann ich das irgendwie abfangen?

Gruß,
Groja2
Member: MrNetman
Solution MrNetman Nov 21, 2013, updated at Jul 17, 2014 at 10:51:12 (UTC)
Goto Top
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 /?
Member: Groja2
Groja2 Nov 22, 2013 at 07:23:44 (UTC)
Goto Top
Hallo MrNetman,

vielen Dank für die Infos! Das ein /? Die Hilfe zu einem Befehl öffnet ist gut zu wissen face-smile

Ich habe mein Problem jetzt endgültig gelöst:

for /F "delims=;" %%f in ('dir /S /B *test.xls') do copy "C:\datei\test2.xls" "%%f" /Y

Nur wofür steht das "delims=;" ?

Gruß,
Groja2
Member: bastla
Solution bastla Nov 22, 2013, updated at Jul 17, 2014 at 10:51:21 (UTC)
Goto Top
Hallo Groja2!
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