Top-Themen

Aktuelle Themen (A bis Z)

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

Neuere Datei mit XCOPY Befehl finden und unter anderem Namen abspeichern

Frage Entwicklung Batch & Shell

Mitglied: Astarot

Astarot (Level 1) - Jetzt verbinden

26.01.2011 um 21:50 Uhr, 5078 Aufrufe, 4 Kommentare

Hallo, Ich habe gerade angefangen mich mit der Batch Programmierung auseinander zu setzen und stosse noch auf ein paar kleine "Problemchen".

In der Hoffnung das mir hier ein wenig auf die Sprünge geholfen werden kann versuche Ich mal mein Problem zu schildern.

Ich möchte mit dem Befehl xcopy überprüfen, ob eine Datei neuer ist als die bereits vorhandene gesicherte Datei.

Nun möchte Ich aber die "ältere" Datei in meinem Sicherungsordner nicht einfach durch die "neuere" Datei aus meinem Quellverzeichniss ersetzen.

Es soll vor dem "erneuern" der Datei eine Kopie der neueren Datei mit dem Inidize [aktuelles Datum + aktuelle Zeit] versehen werden und im Sicherungsordner abgelegt werden.

Um es vieleicht ein wenig verständlicher Auszudrücken:

Im Sicherungsordner befindet sich die Datei: Irgendwas.tpg (letzte Änderung 31.02.1964)
Im Quellverzeichnis befindet sich die Datei: Irgendwas.tpg (letzte Änderung 12.03.1964)

Bevor die Datei im Sicherungordner nun durch die aktuellere Version ersetzt wird, soll eine Kopie der aktuelleren Datei mit dem Namen: Irgendwas.tpg_aktuelleDatum_aktuelle_Uhrzeit im Sicherungsordner abgelegt werden.

Wofür Ich das benötige? Ich möchte sozusagen eine Änderungshistorie einer Datei anlegen und nachvollziehen können was sich in den Dateien geändert hat.

Das würde mir die Fehlersuche in einem Programm wesentlich erleichtern.

Geht das überhaupt mit dem Befehl xcopy oder gibt es da eine sinnvollere Lösung? (Bitte beachten das Ich gerade erst mit Batch anfange )

Vielen Dank im voraus.

Mfg

Astarot
Mitglied: bastla
26.01.2011 um 22:06 Uhr
Hallo Astarot und willkommen im Forum!

Du kannst zwar "xcopy" (mit den Schaltern "/dly") dazu verwenden, den Vergleich durchzuführen - zB
xcopy /dly D:\Quellverzeichnis\Irgendwas.tpg D:\Sicherungsordner\|findstr /c:"1 Datei(en) kopiert">nul && echo ist neuer || echo ist nicht neuer
aber da Du ja ohnehin auch den Timestamp benötigst, würde ich gleich das Änderungsdatum auslesen (in der Schreibweise für einen Batch, und deshalb mit verdoppelten Prozentzeichen für die Schleifenvariablen):
for %%i in ("D:\Quellverzeichnis\Irgendwas.tpg") do for /f "tokens=1-5 delims=.: " %%a in ("%%~ti") do set "QuellDatum=%%c%%b%%a%%d%%e"
Wenn Du das auch für die Sicherungsdatei gemacht hast, lässt sich mit
if %QuellDatum% gtr %SicherungsDatum%
der Vergleich durchführen - gleichzeitig hast Du auch schon den gesuchten Namenszusatz in %QuellDatum% (die Formatierung kannst Du ja ggf noch anpassen - wenn Du etwa zwischen Datum und Uhrzeit noch "_" einbaust und dies auch bei der Ermittlung des Datums der Sicherugsdatei machst, kannst Du den Vergleich immer noch durchführen).

Zum Nachlesen: for /? (ist ein wenig länger, und Du musst bis zum Ende durch ) ...
[Edit] Wenn mit
aktuelleDatum_aktuelle_Uhrzeit
tatsächlich der Zeitpunkt des Kopierens festgehalten werden soll, müsstest Du das Datum "%date%" (oder, als Befehl: date /t) bzw die Uhrzeit "%time%" (oder time /t) in die passende Form bringen (ich würde auf jeden Fall die Reihenfolge Jahr-Monat-Tag für das Datum wählen) - die Vorgangsweise kannst Du aus dem "for /f" von oben ableiten.

Als Alternative könntest Du auch zur Stringzerlegung nach dem Muster
set "Datum=%date:~-4%%date:~-7,2%%date:~-10,2%"
greifen (siehe dazu "set /?").

BTW: Falls Du Dich fragst, warum ich nicht mit "%date:~6,4%" begonnen habe: Je nach Systemeinstellung kann uU vor dem Datum auch noch der Wochentag ausgegeben werden - wenn Du "von hinten" beginnst, ist zumindest dieser Faktor vom Tisch ...
[/Edit]

Grüße
bastla

P.S.: Übrigens noch ein Glückwunsch - Raritäten wie Dateien mit Änderungsdatum "31.02.1964" hat nicht jeder (ja, ich weiß, 1964 war ein Schaltjahr ) ...
Bitte warten ..
Mitglied: pieh-ejdsch
27.01.2011 um 00:22 Uhr
moin bastla,
[OT]
da war das aber ein ganz schön gedeeeehntes Schaltjahr
lag bestimmt daran, dass der 1. FC Köln Meister war.

das mit dem Datum von hinten auflösen ist auch eine sehr gute Variante.
[OT]

Gruß Phil
Bitte warten ..
Mitglied: Astarot
27.01.2011 um 05:14 Uhr
Hallo Bastla,

Danke für diese irre schnelle Antwort. Tatsächlich ist es sogar noch besser wenn (wie bei der oberen Lösung) das tatsächliche Änderungsdatum bzw. letzter schreibender Zugriff auf die Datei als Indize angehängt wird.

Gibt es hier im Forum eine Art WIKI für Batch? Würde mich gerne mehr damit befassen bzw. gerne Verstehen was zum Beispiel der Befehl " "tokens=1-5 delims=.: "" in der Schleife bewirkt.

Danke nochmals für die Hilfe,


Grüße

Astarot
Bitte warten ..
Mitglied: bastla
27.01.2011 um 07:43 Uhr
Hallo Astarot!

WIKI zwar nicht, aber Tutorials - für's erste einmal: http://www.administrator.de/Tutorial_zur_FOR-Schleife.html

Später kannst Du Dir dann zB Bibers Workshops ansehen ...


... und natürlich möglichst viele der Beiträge hier in der Rubrik "Batch & so 'n Zeug" zumindest überfliegen ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Windows 8
Xcopy kann den Pfad nicht finden warum?
gelöst Frage von Mbrgel69Windows 86 Kommentare

Wenn ich ein Batch mit xcopy schreibe: echo off xcopy *.bat C:\test\ pause Kopiert er diese ohne Probleme! Möchte ...

Batch & Shell
Nicht doppelt vorhandene Dateien (nur Name) finden
gelöst Frage von dareboBatch & Shell4 Kommentare

Ich bin auf der Suche nach einer einfachen Möglichkeit (z.B. Batchlösung mit Ausgabe) viele Dateien (größer 500.000) nur nach ...

Batch & Shell
Dateien eines Ordners mit find welche 1234 im Namen haben umbenennen in x12345
gelöst Frage von reissaus73Batch & Shell4 Kommentare

Ich möchte in einem Ordner alle Dateien welche einen speziellen Suchstring enthalten umbenennen in _Suchstring quasi alle Dateien welche ...

Linux
Unix Befehl Grep - find
Frage von ShishaLinux2 Kommentare

Hallo liebe Gemeinde, ich weiß das es einen Befehl bestehend aus Grep und Find gibt mit dem man Dateien ...

Neue Wissensbeiträge
Windows 10

Windows 10 Hello-Anmeldung per Foto ausgehebelt

Tipp von kgborn vor 3 StundenWindows 10

Windows Hello ist eine Funktion, um sich per Fingerabdruck-, Gesichts- oder Iriserkennung bei Windows 10-Geräten anzumelden (siehe), setzt aber ...

Perl

Perl hat heute Geburtstag: 30 Jahre Perl: Lange Gesichter zum Geburtstag

Information von Penny.Cilin vor 11 StundenPerl2 Kommentare

Hallo, auch wenn es wenige wissen und noch weniger Leute es nutzen. Perl hat heute Geburtstag. 30 Jahre Perl ...

Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 11 StundenSicherheit1 Kommentar

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 1012 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Heiß diskutierte Inhalte
Windows Server
SCCM 2016: PXE Boot des Clients schlägt fehl
Frage von gabeBUWindows Server23 Kommentare

Hallo Zusammen Ich habe eine Testumgebung erstellt um über SCCM 2016 einen virtuellen Client aufzusetzen. Folgende Maschinen habe ich ...

Netzwerkgrundlagen
Belibiges Teilnetz einer Subnetzmaske rausfinden?
gelöst Frage von CenuzeNetzwerkgrundlagen19 Kommentare

Wundervollen Gutentag, mittlerweile kann ich Subnetting so einigermaßen, aber ein Problem habe ich noch. Netzwerkadresse und Boradcast errechnen ist ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless12 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Exchange Server
Exchange empfängt Emails - Kann aber keine Senden
gelöst Frage von niklasschaeferExchange Server11 Kommentare

Hallo, ich stehe gerade bei mir zuhause vor folgender Problemstellung. Gegeben sind 2x Hyper-V Host mit Windows Server 2016 ...