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

Datum zweier Dateien auslesen und vergleichen

Frage Entwicklung Batch & Shell

Mitglied: LFS1993

LFS1993 (Level 1) - Jetzt verbinden

06.11.2008, aktualisiert 07.11.2008, 5341 Aufrufe, 11 Kommentare

Hallo zusammen!

Bin noch sehr neu hier und auch auf dem Gebiet der BAT-Dateien, daher stehe ich vor einem Rätsel, was mir auch durch stundenlanges Suchen hier und über Google nicht lösbarer wurde...

Ich möchte das Datum, nur das Datum ohne Uhrzeit, von zwei Dateien miteinander vergleichen und daraus das Ergebnis:

JA, gleiches Datum

oder eben

NEIN, unterschiedliches Datum

erhalten und in einer txt-Datei ausgeben lassen.

Tja, wie gesagt, ich komm da leider nicht wirklich weiter...

Danke sehr im Voraus,

LFS
Mitglied: bastla
06.11.2008 um 15:15 Uhr
Hallo LFS1993 und willkommen im Forum!

Das sollte etwa so gehen:
01.
@echo off & setlocal 
02.
for %%i in ("D:\Datei1.txt") do @for /f %%d in ("%~ti") do set "Dat1=%%d" 
03.
for %%i in ("D:\Datei2.txt") do @for /f %%d in ("%~ti") do set "Dat2=%%d" 
04.
if "%Dat1%"=="%Dat2%" ( 
05.
    echo JA, gleiches Datum 
06.
) else ( 
07.
    echo NEIN, unterschiedliches Datum 
08.
)>D:\Ergebnisdatei.txt
Grüße
bastla
Bitte warten ..
Mitglied: LFS1993
06.11.2008 um 15:26 Uhr
Hi bastla!

Vielen Dank für die schnelle Antwort.

Ich mußte noch ein % im Teil "%~ti" mit einbauen, damit es funktioniert, nur die Ausgabe in eine Datei krieg ich trotzdem nicht hin...
Im Command-Fenster krieg ich dann die Aussage geregelt, aber nur im positiven Fall, also wenn das Datum gleich ist, im Negativfall keine Ausgabe...

Könntest Du da vielleicht nochmal drüber schauen, oder werden noch weitere Infos benötigt?

Gruß, LFS
Bitte warten ..
Mitglied: Biber
06.11.2008 um 16:23 Uhr
Moin LFS1993,

um das IF-ELSE-Konkrokt herum sollten auch noch Klammern, dann passt es.
01.
::----snipp SameDate.bat 
02.
@echo off & setlocal 
03.
Set "out=nul:" 
04.
for %%i in ("%~1") do @for /f %%d in ("%%~ti") do set "Dat1=%%d" 
05.
for %%i in ("%~2") do @for /f %%d in ("%%~ti") do set "Dat2=%%d" 
06.
(if "%Dat1%"=="%Dat2%" ( 
07.
    echo JA, gleiches Datum 
08.
) else ( 
09.
    echo NEIN, unterschiedliches Datum 
10.
))>%out%
In der zweiten Zeite, wo jetzt "Set out=nul:" steht, kann eine Ausgabedatei definiert werden.
Zum Testen reicht ja die Definition von "nul:" bzw. "con:" um das Umleiten zu Testen.
Bei Angabe von "nul:" sollte in keinem der beiden Fälle irgendwas auf dem Bildschirm ("con:") erscheinen, bei Angabe von "con:" in beiden Fällen.
Hier ein "con:"-Beispiel:
01.
>e:\schnipsel\samedate x.bat x.log 
02.
NEIN, unterschiedliches Datum 
03.
 
04.
(=16:14:24  D:\temp=) 
05.
>e:\schnipsel\samedate x.bat x.bat 
06.
JA, gleiches Datum
Grüße
Biber
[Edit] Okay, wieder fast zu langsam....[/Edit]
Bitte warten ..
Mitglied: bastla
06.11.2008 um 16:23 Uhr
Hallo LFS1993!

Sorry, war etwas unter Zeitdruck und der Batch dementsprechend dahingeschludert ...

So sollte es dann wirklich was werden:
01.
@echo off & setlocal 
02.
for %%i in ("D:\Datei1.txt") do for /f %%d in ("%%~ti") do set "Dat1=%%d" 
03.
for %%i in ("D:\Datei2.txt") do for /f %%d in ("%%~ti") do set "Dat2=%%d" 
04.
if "%Dat1%"=="%Dat2%" ( 
05.
    >D:\Ergebnisdatei.txt echo JA, gleiches Datum 
06.
) else ( 
07.
    >D:\Ergebnisdatei.txt echo NEIN, unterschiedliches Datum 
08.
)
[Edit] ... aber Bibers Version ist ohnehin besser, also nimm gleich diese. [/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: LFS1993
06.11.2008 um 16:47 Uhr
Hi Ihr beide!

Also, ich danke Euch beiden sehr, so klappt das wirklich wunderbar, mir ist absolut geholfen und das freut mich sehr!!!!!!
Kann man da vorher vielleicht noch eine Abfrage integrieren, wo nach der ersten der beiden Dateien geprüft wird und falls diese nicht da sein sollte gleich eine andere Meldung ausgeben und das weitere Script unterbrechen lassen?!?

Da ist nämlich eine Datei, die automatisiert behandelt wird, die heißt ganz einfach xyz.txt und wenn die bearbeitet wurde, danach suche ich, heißt die _xyz.txt

Ich würde also auf den exakten Namen prüfen lassen und falls was nicht paßt sofort eine STOP-Meldung generieren lassen wollen, das wäre absolut super!

Danke nochmals, auch im Voraus,

LFS
Bitte warten ..
Mitglied: Biber
06.11.2008 um 18:41 Uhr
Moin LFS1993,

egal, ob Du nun immer auf zwei bestimmte Dateinamen oder auf zwei als Parameter übergebene Dateinamen prüfen willst, die Mimik im Batch wäre halt jeweils ungefähr so:
01.
@Echo off & setlocal 
02.
 
03.
IF NOT EXIST "D:\EinPfad\DeineDatei.xyz" ( 
04.
          echo Datei "D:\EinPfad\DeineDatei.xyz" nicht gefunden. 
05.
          goto :eof 
06.
07.
...{ und dito für die zweite Datei} 
08.
:: ---oder, bei der Zwei-Parameter-Variante -- 
09.
IF NOT EXIST "%~1" (echo Datei "%~1" nicht gefunden.) && goto :eof 
10.
IF NOT EXIST "%~2" (echo Datei "%~2" nicht gefunden.) && goto :eof 
11.
 
12.
...{und hier der Batch von oben}.
Grüße
Biber
Bitte warten ..
Mitglied: LFS1993
07.11.2008 um 10:39 Uhr
WUNDERBAR!!!

Ja, so einfach scheint das also zu sein, wenn man sich damit auskennt und beschäftigt, werd mich da jetzt auch mal etwas mehr reinhängen.

Eine kleine Frage hab ich aber noch:

Bei der Prüfung auf das gleiche Datum, könnte man da sicher auch 2 verschiedene .txt erzeugen lassen, und per goto woanders in der BAT hinspringen um dort weitere BAT's anzustarten?
Müßte dann wohl in etwa so aussehen, oder irre ich mich:

(if "%Dat1%"=="%Dat2%" (
echo JA goto :allesbestens
)>allesbestens.txt else (
echo NEIN goto :dastimmtwasnicht
)>dastimmtwasnicht.txt
)

Oder hab ich da die völlig falschen Ansätze????

Danke nochmal!
Bitte warten ..
Mitglied: bastla
07.11.2008 um 12:53 Uhr
Hallo LFS1993!

Kurze Frage: Warum probierst Du es nicht einfach aus?

Etwas ansehnlicher formatiert (könntest Du so auch erreichen):
01.
if "%Dat1%"=="%Dat2%" ( 
02.
    echo JA 
03.
    goto :allesbestens 
04.
)>allesbestens.txt else ( 
05.
    echo NEIN 
06.
    goto :dastimmtwasnicht 
07.
)>dastimmtwasnicht.txt 
08.
 
09.
 
10.
echo Hierher kommst Du nie ... 
11.
 
12.
:allesbestens 
13.
echo ok 
14.
goto :eof 
15.
 
16.
:dastimmtwasnicht 
17.
echo nee 
18.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: LFS1993
07.11.2008 um 13:18 Uhr
Hi bastla!

Schnelle Antwort, weil ich noch etwas ängstlich auf dem Sektor bin...
Ich gelobe aber feierlich Besserung und werde nicht mehr wegen jeder Kelinigkeit hier die Pferde scheu machen

Dankeschön aufs Herzlichste!!!!!
Bitte warten ..
Mitglied: bastla
07.11.2008 um 13:26 Uhr
Hallo LFS1993!

... hier die Pferde scheu machen
ist ja nicht wirklich ein Problem, aber Du bringst Dich damit auch um die Chance, aus Deinen Fehlern zu lernen - gerade für Anfänger finde ich "learning by doing" unabdingbar ...

... und solange es in einer Testumgebung (oder so vergleichsweise harmlos wie in diesem Beispiel) stattfindet, ist Angst wohl nicht nötig.

Grüße
bastla
Bitte warten ..
Mitglied: LFS1993
07.11.2008 um 14:02 Uhr
Hi bastla!

Paßt bestens, ich hab das auch schon weiter ausgebaut, macht wirklich Laune, vor allem kann man wirklich aus den Fehlern lernen!!!
Werd mich da wohl doch noch mehr in die Materie arbeiten müssen, gefällt mir sehr gut.

Ich danke nochmals,

Gruß, LFS
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Ähnliche Inhalte
Batch & Shell
Powershell Script um Inhalt von Dateien zu vergleichen (14)

Frage von zamsi7 zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell - Dateien aus verschiedenen Arrays - Attribute vergleichen (5)

Frage von Giffas zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

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

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...