lfs1993
Goto Top

Datum zweier Dateien auslesen und vergleichen

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

Content-Key: 101195

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

Printed on: April 18, 2024 at 14:04 o'clock

Member: bastla
bastla Nov 06, 2008 at 14:15:43 (UTC)
Goto Top
Hallo LFS1993 und willkommen im Forum!

Das sollte etwa so gehen:
@echo off & setlocal
for %%i in ("D:\Datei1.txt") do @for /f %%d in ("%~ti") do set "Dat1=%%d"  
for %%i in ("D:\Datei2.txt") do @for /f %%d in ("%~ti") do set "Dat2=%%d"  
if "%Dat1%"=="%Dat2%" (  
    echo JA, gleiches Datum
) else (
    echo NEIN, unterschiedliches Datum
)>D:\Ergebnisdatei.txt
Grüße
bastla
Member: LFS1993
LFS1993 Nov 06, 2008 at 14:26:59 (UTC)
Goto Top
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
Member: Biber
Biber Nov 06, 2008 at 15:23:08 (UTC)
Goto Top
Moin LFS1993,

um das IF-ELSE-Konkrokt herum sollten auch noch Klammern, dann passt es.
::----snipp SameDate.bat
@echo off & setlocal
Set "out=nul:"  
for %%i in ("%~1") do @for /f %%d in ("%%~ti") do set "Dat1=%%d"  
for %%i in ("%~2") do @for /f %%d in ("%%~ti") do set "Dat2=%%d"  
(if "%Dat1%"=="%Dat2%" (  
    echo JA, gleiches Datum
) else (
    echo NEIN, unterschiedliches Datum
))>%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:
>e:\schnipsel\samedate x.bat x.log
NEIN, unterschiedliches Datum

(=16:14:24  D:\temp=)
>e:\schnipsel\samedate x.bat x.bat
JA, gleiches Datum

Grüße
Biber
[Edit] Okay, wieder fast zu langsam....[/Edit]
Member: bastla
bastla Nov 06, 2008 at 15:23:10 (UTC)
Goto Top
Hallo LFS1993!

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

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

Grüße
bastla
Member: LFS1993
LFS1993 Nov 06, 2008 at 15:47:12 (UTC)
Goto Top
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
Member: Biber
Biber Nov 06, 2008 at 17:41:18 (UTC)
Goto Top
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:
@Echo off & setlocal

IF NOT EXIST "D:\EinPfad\DeineDatei.xyz" (  
          echo Datei "D:\EinPfad\DeineDatei.xyz" nicht gefunden.  
          goto :eof
)
...{ und dito für die zweite Datei}
:: ---oder, bei der Zwei-Parameter-Variante --
IF NOT EXIST "%~1" (echo Datei "%~1" nicht gefunden.) && goto :eof  
IF NOT EXIST "%~2" (echo Datei "%~2" nicht gefunden.) && goto :eof  

...{und hier der Batch von oben}.

Grüße
Biber
Member: LFS1993
LFS1993 Nov 07, 2008 at 09:39:29 (UTC)
Goto Top
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!
Member: bastla
bastla Nov 07, 2008 at 11:53:28 (UTC)
Goto Top
Hallo LFS1993!

Kurze Frage: Warum probierst Du es nicht einfach aus?

Etwas ansehnlicher formatiert (könntest Du auch erreichen):
if "%Dat1%"=="%Dat2%" (  
    echo JA
    goto :allesbestens
)>allesbestens.txt else (
    echo NEIN
    goto :dastimmtwasnicht
)>dastimmtwasnicht.txt


echo Hierher kommst Du nie ...

:allesbestens
echo ok
goto :eof

:dastimmtwasnicht
echo nee
goto :eof
Grüße
bastla
Member: LFS1993
LFS1993 Nov 07, 2008 at 12:18:11 (UTC)
Goto Top
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 face-wink

Dankeschön aufs Herzlichste!!!!!
Member: bastla
bastla Nov 07, 2008 at 12:26:13 (UTC)
Goto Top
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. face-wink

Grüße
bastla
Member: LFS1993
LFS1993 Nov 07, 2008 at 13:02:58 (UTC)
Goto Top
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