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

Files durch eine Batch ersetzen

Frage Entwicklung Batch & Shell

Mitglied: ReBeLL09

ReBeLL09 (Level 1) - Jetzt verbinden

03.06.2009, aktualisiert 03:27 Uhr, 3504 Aufrufe, 7 Kommentare

Grundlage:

Ich habe einen Ordner in den sich mehrer unterordner befinden.
In jedem dieser Ordner befindet sich eine datei.
Diese ist in jedem Ordner identisch und trägt auch den gleichen Namen.

Vorhaben:
Nun muss diese eine Datei neu bearbeitet werden.
Ich habe sie also (temporär) auf dem Desktop gespeichert und entsprechend editiert.
(Leider) müssen alle anderen Datein auch aktualisiert werden.
Die Möglichkeit alle Manuell zu kopieren wäre eine Altanative, aber sehr mühselig, da es sich um wirklich einige Unterordner handelt (ü100).

Nun meine Idee:

Ich würde gern eine Batch schreiben, die den Inhalt des Ordners ausliest (auch der Unterordner da es dort auch wieder Unterordner gibt)
und in jeden Ordner die modifizierte Datei kopiert und die alte dementsprechend ersetz.

Der Befehl zum kopieren ist ja "xcopy".

Nun die Frage:

Geht dieses auslesen und kann ich den xcopy-befehl so schreiben, das er die Datei auch in die Unterordner kopiert und ersetz?


Info:

Damit keine fehler durch Pfade entstehen können, habe ich mir eine Speicherung auf meiner Festplatte angelegt.
Die Datei befindet sich nun auf "C:\"
Der Order mit den Unterordnern befindet sich auch auf "C:\"
Ich habe ihn mal Batch gennant ;).

So muss also die Datei von "C:\" in den Ordner und alle Unterordner von "C:\Batch\" kopiert werden.

Hoffe mir kann jemand helfen und vielen Dank schonmal im vorraus.
Mitglied: mexx
03.06.2009 um 06:11 Uhr
Ich empfehle Dir dringend, Dich von den Gedanken das mit Batch zu machen zu entfernen. Die Zukunft der Windows Commando Ebene heißt Powershell. Per Powershell wären das vielleicht max. 10 Zeilen.

1. Rekursive Suche aller Dateien und/oder Unterordner (ein Befehl)
2. Per For-Schleife alle Dateien in den gefundenen Ordnern und Unterordnern ersetzten

Okay, sind 5 Zeilen. Wenn Du Powershell einsetzten willst, helfe ich Dir gerne beim coden.
Bitte warten ..
Mitglied: Biber
03.06.2009 um 09:22 Uhr
Moin ReBeLL09,

willkommen im Forum.
Bei allem Verständnis für pubertäre ReBeLLion:
Wir reden uns hier im Forum mit "Hallo", "Moin" oder "Tach" an und nicht mit "Grundlage".
Und auf "vielen Dank schonmal im vorraus" verzichten wir gerne zugunsten einer Rückmeldung "Hat geklappt" bzw. "hat nichts gebracht".

Zurück zu Deiner Frage.
Wie mexx schon bemerkte, ist die Lösung dieser Aufgabe mit CMD-Mitteln etwas behäbiger und uneleganter.
Deshalb auch nur eine kurze Skizze der Vollständigkeit halber (aus Nostalgiegründen sozusagen)

Dei folgendem Testszenario (Datei Test37.txt ist in einigen von vielen Unterverzeichnissen unterhalb D:\Temp und die "neue" Datei "test37.txt ist auf meinem Desktop)
01.
dir test37.* /b /s 
02.
:\temp\test37.txt 
03.
:\temp\templogs\test37.txt 
04.
:\temp\test\test37.txt 
05.
:\temp\test22\test37.txt 
06.
:\temp\testheute\test37.txt
.... macht das gewünschte folgende Zeile am CMD-Prompt:
01.
for /r "d:\temp" %i in (test37.txt) do @if exist "%i" copy "%userprofile%\desktop\test37.txt" "%~fi"
Falls in ALLEN Unterverzeicnissen diese Datei platziert werden soll (auch wenn noch keine vorher existierte), dann das "If exist "%i" einsparen.

Grüße
Biber
Bitte warten ..
Mitglied: LotPings
03.06.2009 um 10:04 Uhr
Zitat von Biber:
Zurück zu Deiner Frage.
Wie mexx schon bemerkte, ist die Lösung dieser Aufgabe mit CMD-Mitteln etwas behäbiger und uneleganter.

Sorry,
da kann ich nicht folgen,

für genau diesen Fall gibts es schon seit Urzeiten den Befehl Replace,
und bevor ich einen Fünfzeiler in einer objektorientierten Scriptsprache schreibe,
nehme ich doch lieber einen einzigen Befehl.

Es gibt mit Sicherheit Felder in denen PowerShell glänzen kann - hier nicht.

Replace C:\Datei C:\Batch\ /S

Gruß
LotPings
Bitte warten ..
Mitglied: ReBeLL09
04.06.2009 um 13:27 Uhr
Zitat von LotPings:

Replace C:\Datei C:\Batch\ /S

Gruß
LotPings

kann ich mit diesem Befehl die Datei in alle Unterordner kopieren?
würde das gern erst wissen ;)

@ Biber
sry wollte nicht protzig oder so wirken ;)
kenne nur von anderen Forums, das wenn man es so gegliedert schreibt, die verständniss besser ist ;)

Zugegeben, das Hallo, Moin, Tach, Sers, Aloa oder wie auch immer, habe ich irgendwie verschluckt ;) *schande auf mein haupt*
Bitte warten ..
Mitglied: LotPings
04.06.2009 um 14:08 Uhr
Hallo Rebell09,
(so heisst übrigens auch das Computer-Gehäuse meines Sohnes)
ich hasse diese "Sichergeher"

Du hast zwei Möglichkeiten, entweder du glaubst mir, (ob nun beim ersten oder zweiten Mal)
oder du probierst/prüfst es nach, ggfs. mit Testdaten.

Die Hilfe des Befehls steht jedem offen, einfach in einem CMD Fenster

Replace /?

eingeben.

Gruß
LotPings
Bitte warten ..
Mitglied: Biber
04.06.2009 um 19:45 Uhr
Moin ReBeLL09,

*schande auf mein haupt*
Okay, kannst Du wieder abwaschen...

Grundsätzlich hat der Lord natürlich Recht mit den zwei Möglichkeiten, aber weil es hier wirklich unterschiedliche Ergebnisse gibt...

  • die erste meiner FOR/R-Varianten (die mit "IF EXIST") würde 5 Dateien finden und übernageln
  • die zweite Variante ohne IF EXIST würde in knapp 70 Unterverzeichnissen unterhalb des Startverzeichnisses d:\temp eine Kopie abladen
  • Lords Weg mit Replace.exe ersetzt maximal die 5 schon vorhandenen Dateien (optional davon nur die, die älter sind als die neue)
01.
>replace "%userprofile%\desktop\test37.txt" D:\temp /s 
02.
Ersetzen von D:\temp\test37.txt 
03.
Ersetzen von D:\temp\templogs\test37.txt 
04.
Ersetzen von D:\temp\test\test37.txt 
05.
Ersetzen von D:\temp\test22\test37.txt 
06.
Ersetzen von D:\temp\testheute\test37.txt 
07.
5 Datei(en) ersetzt
---> aber Replace.exe bietet keine Möglichkeit, in ALLE Unterverzeichnisse (egal ob Datei vorhanden oder nicht) eine Kopie zu senden.

Wenn die Frage dann hinreichend beantwortet ist Deiner Meinung nach, bitte auf "erledigt" setzen.

Grüße
Biber

P.S. @LotPings
(so heisst übrigens auch das Computer-Gehäuse meines Sohnes)
Dein Sohn gibt seinem Computer Namen??? Na ja...
Meine Töchter haben ihren Plüschtierchen auch Namen gegeben, aber eher sowas wie Fluffi oder Lisa...
Aber ReBeLL09 ist auch eine hübsche Idee...
Bitte warten ..
Mitglied: LotPings
04.06.2009 um 19:58 Uhr
Zitat von Biber:
P.S. @LotPings
> (so heisst übrigens auch das Computer-Gehäuse meines Sohnes)
Dein Sohn gibt seinem Computer Namen??? Na ja...
Nö, das hieß auch vorher schon so.
Rebel

Meine Töchter haben ihren Plüschtierchen auch Namen gegeben, aber eher sowas wie Fluffi oder Lisa...
Aber ReBeLL09 ist auch eine hübsche Idee...

Haha O
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

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

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

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

Frage von MegaGiga zum Thema Hardware ...