neoleo
Goto Top

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]

Content-Key: 160885

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

Printed on: April 19, 2024 at 17:04 o'clock

Mitglied: 60730
60730 Feb 16, 2011, updated at Oct 18, 2012 at 16:45:52 (UTC)
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ß
Member: bastla
bastla Feb 16, 2011 at 10:50:36 (UTC)
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
Member: NeoLeo
NeoLeo Feb 16, 2011 at 11:10:08 (UTC)
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?
Member: bastla
bastla Feb 16, 2011 at 11:17:06 (UTC)
Goto Top
Hallo NeoLeo!
diese txt nun lgelöscht werden soll?
"Diese txt" ist %3 (bzw "C:\TEMP\Test\%~3") ...

Grüße
bastla
Member: NeoLeo
NeoLeo Feb 16, 2011 at 11:35:00 (UTC)
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]
Member: bastla
bastla Feb 16, 2011 at 11:39:14 (UTC)
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 ...
Mitglied: 60730
60730 Feb 16, 2011 at 11:47:00 (UTC)
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ß
Member: NeoLeo
NeoLeo Feb 16, 2011 at 12:07:26 (UTC)
Goto Top
Haha,
es funktioniert jetz alles.

Danke euch face-smile
Mitglied: 60730
60730 Feb 16, 2011 at 15:51:41 (UTC)
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ß