neoleo

Zeit auslesen und txt speichern oder löschen

Ich habe folgendes Problem. Und zwar will ich in einen Ordner die Bearbeitungszeit von Text dateien auselesen und den stündlichen wert vergleichen. Trifft dieser meinen Anforderungen zu soll die txt in einen neuen ordner kopiert werden wenn nicht lösche sie. Ich habe bereits ein Programm von Biber genommen und angepasst was alle txt dateien auflistet und vergleicht. Jedoch wie kann ich nun sagen das auch nur diese eine txt gelöscht bzw kopiert werden soll.
Ich habe bereits den Befehl: del C:\TEMP\Test\*.txt getestet aber da löscht es mir alle txt dateien und das ist nicht das ziel.

Hier der Quelltext
@ECHO OFF
ECHO Import aller Dateien

for /f "delims=" %%i in ('dir C:\TEMP\Test\*.txt /s /b /a-d') do call :splitDate %%~ti  
goto :eof 

:splitDate Parameter1 ist Datum , Parameter2 ist Zeit
for  /f "tokens=1-5 delims=.:, " %%a in ("%1.%2") do (   
 set TT=%%a 
 Set MM=%%b 
 Set JJ=%%c 
 Set hh=%%d 
 Set mi=%%e 

 echo Tag: %TT% Monat: %MM% Jahr: %JJ% Stunde: %hh% Minute: %mi% 

 IF %hh% LSS 12 (
 echo Datei Speichern 
 rem hier soll jetzt die txt kopiert werden
 ) ELSE (
 echo Datei löschen
 rem hier soll die txt gelöscht werden
 )

) 
Goto :eof
Hoffe ihr könnt mir helfen

[Edit Biber] Codeformatierung [/Edit]
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 160885

Url: https://administrator.de/forum/zeit-auslesen-und-txt-speichern-oder-loeschen-160885.html

Ausgedruckt am: 05.05.2025 um 08:05 Uhr

60730
60730 16.02.2011, aktualisiert am 18.10.2012 um 18:45:52 Uhr
Goto Top
moin und willkommen...

zum Thema:
Ich habe folgendes Problem.
und
@ECHO OFF 


for /f "delims=" %%i ... do call
bedeutet doch, du hast in dem Call Block den Dateinamen/verweis dieser einen speziellen Datei.
Benutze den doch.

Gruß
bastla
bastla 16.02.2011 um 11:50:36 Uhr
Goto Top
Hallo NeoLeo und willkommen im Forum!

Damit Du auch wissen kannst, um welche Datei es geht, musst Du eben die auch noch mit in das Unterprogramm übergeben:
for /f "delims=" %%i in ('dir C:\TEMP\Test\*.txt /s /b /a-d') do call :splitDate %%~ti "%%i"
wo sie dann als %3 (allerdings ohne Pfad) ankommt ...

... daher würde ich vorweg (als Zeile 3) mit
pushd "C:\TEMP\Test"
gleich in den passenden Ordner wechseln (und nach Zeile 4 dann das Gegenstück "popd" ergänzen) ...

Grüße
bastla
NeoLeo
NeoLeo 16.02.2011 um 12:10:08 Uhr
Goto Top
Ok die Wert Übergabe ist logisch darüber habe ich jetzt auch schon nachgedacht, danke erstma.
Aber wie sage ich jetz, nachdem festgestellt wurde, das mein wert nicht meinen vorgaben entspricht und diese txt nun lgelöscht werden soll?
bastla
bastla 16.02.2011 um 12:17:06 Uhr
Goto Top
Hallo NeoLeo!
diese txt nun lgelöscht werden soll?
"Diese txt" ist %3 (bzw "C:\TEMP\Test\%~3") ...

Grüße
bastla
NeoLeo
NeoLeo 16.02.2011 um 12:35:00 Uhr
Goto Top
Ok ich habe es nun volgendermasen Umgesetzt
rem @ECHO OFF
ECHO Import aller Dateien
pushd "C:\TEMP\Test"  
for /f "delims=" %%i in ('dir C:\TEMP\Test\*.txt /s /b /a-d') do call :splitDate %%~ti "%%i"  
popd "C:\TEMP\Test"  
goto :eof 

:splitDate Parameter1 ist Datum , Parameter2 ist Zeit
for  /f "tokens=1-5 delims=.:, " %%a in ("%1.%2") do (   
 set TT=%%a 
 Set MM=%%b 
 Set JJ=%%c 
 Set hh=%%d 
 Set mi=%%e 
 
 echo Tag: %TT% Monat: %MM% Jahr: %JJ% Stunde: %hh% Minute: %mi% 
 
 IF %hh% LSS 12 (
 echo Datei Speichern
 move C:\TEMP\Test\%~3 C:\TEMP\Test Import\*.*
 ) ELSE (
 echo Datei loeschen
 "C:\TEMP\Test\%~3"  
 )
) 
Goto :eof
Aber es funktioniert noch irgendwie nicht so richtig

[Edit Biber] Nochmal Codeformatierung nachgezogen. Bei nächsten Mal werde ich unleidlich. [/Edit]
bastla
bastla 16.02.2011 um 12:39:14 Uhr
Goto Top
Hallo NeoLeo!

Aber es funktioniert noch irgendwie nicht so richtig
Es geht doch nix über aussagekräftige Fehlermeldungen ... face-wink

Grüße
bastla

P.S.: Verwende doch bitte ""-Tags ...
60730
60730 16.02.2011 um 12:47:00 Uhr
Goto Top
Eine Batch - siehe mein verlinktes Textchen über echo off ist eine zusammenfassung einzelner Befehle, die jeweils funktionieren müssen.
move C:\TEMP\Test\%~3 C:\TEMP\Test Import\*.*
ist ein Befehl, der so nicht funktioniert. da fehlen ein/zwei paar Gänsefüße und ein (das) paar sternchen gehört da auch nicht hin.
move "C:\TEMP\Test\%~3" "C:\TEMP\Test Import\"
eventuelle weitere Fehler such ich nicht.

Gruß
NeoLeo
NeoLeo 16.02.2011 um 13:07:26 Uhr
Goto Top
Haha,
es funktioniert jetz alles.

Danke euch face-smile
60730
60730 16.02.2011 um 16:51:41 Uhr
Goto Top
Zitat von @NeoLeo:
Haha,
es funktioniert jetz alles.

Danke euch face-smile

Bitte, aber ohne den grünen Haken ist das nur die halbe Miete.

Gruß