Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Datei in Unterordnern ersetzen.

Frage Entwicklung Batch & Shell

Mitglied: Groja2

Groja2 (Level 1) - Jetzt verbinden

21.11.2013 um 14:50 Uhr, 2479 Aufrufe, 6 Kommentare, 3 Danke

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
Mitglied: MrNetman
LÖSUNG 21.11.2013, aktualisiert 17.07.2014
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
Bitte warten ..
Mitglied: bastla
21.11.2013 um 15:32 Uhr
Hallo Groja2 und willkommen im Forum!

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

Grüße
bastla
Bitte warten ..
Mitglied: Groja2
21.11.2013 um 16:18 Uhr
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
Bitte warten ..
Mitglied: MrNetman
LÖSUNG 21.11.2013, aktualisiert 17.07.2014
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 /?
Bitte warten ..
Mitglied: Groja2
22.11.2013 um 08:23 Uhr
Hallo MrNetman,

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

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
Bitte warten ..
Mitglied: bastla
LÖSUNG 22.11.2013, aktualisiert 17.07.2014
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
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch Datei zum verschieben von Dateien aus Unterordnern ? (10)

Frage von Ghostrider1911 zum Thema Batch & Shell ...

Windows Netzwerk
Windows Server 2003 SBS Netzwerk durch neuen Server Ersetzen (4)

Frage von MultiStorm zum Thema Windows Netzwerk ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...