Jump to content
Melde dich an, um diesen Inhalt zu abonnieren  
Zoran

Mit Batch File prüfen ob Datei vorhanden

Empfohlene Beiträge

Hallo,

 

Ich häng gerade an einem Problem undzwar wird täglich eine Datei z.B. c:\test.txt erstellt. Manchmal besteht das Problem das die Datei nicht erstellt wurde und nur mit dem Datum von gestern vorhanden ist. Ich brauch also eine Prüfung die überprüft ob die Datei mit dem aktuellem Datum vorhanden.

 

In dem unteren Beispiel prüfe Ich leider nur auf die Datei und nicht ab das Erstellungsdatum. Gibt es hier einen Batch Befehl?

 

if exist C:\test.txt goto :JA

goto NEIN

 

:JA

echo JA >> c:\ja.txt

exit

 

:NEIN

echo NEIN >> c:\a\nein.txt

exit

 

 

Vielleicht hat jemand einen Tipp

 

 

Danke im Voraus

 

Gruss,

zoran

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo,

 

Vielen Dank schonmal für die Antwort!!!

 

Jetzt habe ich noch ne Frage:

 

Kann man das auch so lösen das der Dateiname nicht verändert wird???

 

 

 

Danke

 

Gruss

Zoran

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Das Problem ist ich habe auf einem SQL Server folgende Jobs

 

1. Tabelleninhalt löschen

2. Daten der TXT Datei in Tabelle importieren

 

Das heisst wenn die TXT ausversehen durch das wegkopieren nicht mehr da sein sollte, ist das noch schlimmer wie wenn die Datei einen Tag alt wäre...

 

Weil die SQL Tabelle sonst leer bleiben würde...

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Muss es Batch sein?

Mit VB-Script ginge es z.B. so:

 

Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\")

for each file in folder.Files
  if (file.name = "test.txt") and (file.datelastmodified < Date()) then 
   strJaNein ="NEIN" 
 else 
   strJaNein = "JA"
 end if
next
'... Ausgabe von strJaNein nach belieben...

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Vielen dank für die ausführliche lösung!

 

das Problem mit VB kenne ich mich garnicht aus!!!

Deswegen wäre mir ein Batch File etwas lieber...

 

Hmm ich weiss echt net was ich noch probieren kann!!!

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

OK, dann'n Kompromiss:

Eine "testdatum.vbs":

Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\")
for each file in folder.Files
 if file.name = "test.txt" then
   if file.datelastmodified < Date() then varExitCode = 0 else varExitCode = 1
 end if
next
WScript.Quit varExitCode

und eine "testdatum.bat", die aufgerufen wird:

@echo off
call wscript.exe testdatum.vbs
if %ERRORLEVEL%==0 goto NEIN
echo JA > test.log
goto END
:NEIN
echo NEIN > test.log
:end

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich hab ne etwas andere frage zu dem Thema, ich habe folgende Aufgabenstellung:

 

Ich soll ein Script schreiben, welches überprüft, ob der User neue Daten erzeugt hat, wenn ja, sollen diesen auf einen Server Kopiert werden.

 

Anschließend soll der Transfer der Daten überprüft werden, sprich ob die Originaldateien mit den kopierten Dateien übereinstimmen. Ist dies alles erledigt soll eine Logfile erstellt werden und per E-Mail versendet werden.

 

Den leichten teil mit dem Kopieren habe ich mit einer Batch Datei gelöst und das funktioniert soweit.

 

Hier ist mein Quelltext, damit ihr seht wie weit ich bin:

 

@echo off

xcopy g:\test\*.* h:\safe /e/s/y/d

FOR /F "tokens=1,2 delims=:" %%d IN ('date /t') DO set dat=%%d

FOR /F "tokens=1,2 delims=:" %%i IN ('time /t') DO set zeit=%%i-%%j

rename h:\safe\safe "%dat%%zeit%.Safe"

FOR /F "skip=2 tokens=*" %%c IN ('DIR /O-D /B h:\safe\*safe') DO (rd h:\safe\"%%c" /s/q)

exit

 

erklärungen in ():

xcopy g:\test\*.* (Start) h:\safe (Ziel) /e/s/y/d (Parameter)

(kopiert das Startverzeichnis zum Zielverzeichnis)

 

FOR /F "tokens=1,2 delims=:" %%d IN ('date /t') DO set dat=%%d

(kreiert eine Variable "dat" = Datum)

 

FOR /F "tokens=1,2 delims=:" %%i IN ('time /t') DO set zeit=%%i-%%j

(kreiert eine Variable "zeit" = Uhrzeit)

 

rename h:\safe\safe "%dat%%zeit%.Safe"

(benennt das soeben kopierte Verzeichnis in "Datum Uhrzeit.Safe" um)

 

FOR /F "skip=2 tokens=*" %%c IN ('DIR /O-D /B h:\safe\*safe') DO (rd h:\safe\"%%c" /s/q)

(legt fest, dass nur die zwei neusten Verzeichnisse bleiben, und die älteren gelöscht werden. Details:

skip=2 = gibt an, dass die zwei neusten übersprungen werden

h:\safe\*Safe' = gibt die zu prüfenden Verzeichnisse an

rd h:\safe\"%%c" /s/q = das ist der Löschbefehl

 

 

Wenn mir jmd helfen könnte wäre ich euch sehr sehr verbunden. Sollte der Thread nicht passen, sagt es mir gleich :)

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich würde sagen: Eigentlich solltest Du dafür einen eigenen, neuen Thread aufmachen ;)

 

Gibt es einen Grund, dass das per Script gemacht werden soll?

Eigentlich wäre das doch eine Aufgabe, die am einfachsten mit einer richtigen Datensicherungssoftware (Arcserve o.ä.) gemacht werden könnte. Verifizieren, Log verschicken... wären dort dann nur einfach anzuklickende Optionen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Jetzt muss ich doch noch eine Frage stellen:

 

undzwar habe ich auch eine Datei mit der Bezeichnung FA_Export.txt

 

kann das sein das das VB Skript ein Problem mit dem _ Zeichen hat???

 

 

Danke

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Habs grad mal ausprobiert. Bei mir gibtst keine Probleme.

Der Dateiname ist ja in dem Script hart codiert. Wenn ich "test.txt" durch "FA_Export.txt" ersetzte, geht's bei mir nach wie vor.

Solltest Du noch mehr verschiedene Dateien haben, sollte man das hart codierte durch nen Übergabeparameter ersetzen. Sagts Bescheid, dann bieg ich's mal in ner freien Minute um.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
Melde dich an, um diesen Inhalt zu abonnieren  

×