lefg 276 Geschrieben 24. November 2004 Melden Teilen Geschrieben 24. November 2004 Hallo Anne, die einzig sichtbare Konstante ist in den Dateinamen ist P04. Oder ist auch das variabel? Man könnte wohl nach Erstellungsdatum löschen. Ich mache dafür gerade einen Entwurf und stelle die Bedingen auf. Dabei gehe ich sehr elemntar vor. Es ist noch sehr grob. Ich kann nur nebenbei daran arbeiten, da ich mich auch noch um meine Arbeit kümmern muss. Gruß Edgar Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 24. November 2004 Melden Teilen Geschrieben 24. November 2004 call :today call :offsetdays call :delequals pause :today :: aktuelles Datum aufbereiten echo %date% set today=%date:~3,2% echo %today% set thismonth=%date:~6,2% echo %thismonth% set thisyear=%date:~9,4% echo %thisyear% :goto :eof :offset set /a offsetdays=3 echo %offsetdays% goto :eof :delequals :: Löschdatum aufbereiten if %thismonth%"==01" && if %today%"==01" call :Dec29 if %thismonth%"==01" && if %today%"==02" call :Dec30 if %thismonth%"==01" && if %today%"==03" call :Dec31 if %thismonth%"==02" && if %today%"==01" call :Jan29 if %thismonth%"==02" && if %today%"==02" call :Jan30 if %thismonth%"==02" && if %today%"==03" call :Jan31 if %thismonth%"==03" && if %today%"==01" call :Feb26 if %thismonth%"==03" && if %today%"==02" call :Feb27 if %thismonth%"==03" && if %today%"==03" call :Feb38 if %thismonth%"==04" && if %today%"==01" call :Mar29 if %thismonth%"==04" && if %today%"==02" call :Mar30 if %thismonth%"==04" && if %today%"==03" call :Mar31 if %thismonth%"==05" && if %today%"==01" call :Apr30 if %thismonth%"==05" && if %today%"==02" call :Apr29 if %thismonth%"==05" && if %today%"==03" call :Apr28 if %thismonth%"==06" && if %today%"==01" call :May29 if %thismonth%"==06" && if %today%"==02" call :May30 if %thismonth%"==06" && if %today%"==03" call :May31 if %thismonth%"==07" && if %today%"==01" call :Jun28 if %thismonth%"==07" && if %today%"==02" call :Jun29 if %thismonth%"==07" && if %today%"==03" call :Jun30 if %thismonth%"==08" && if %today%"==01" call :Jul29 if %thismonth%"==08" && if %today%"==02" call :Jul30 if %thismonth%"==08" && if %today%"==03" call :Jul31 if %thismonth%"==09" && if %today%"==01" call :Aug29 if %thismonth%"==09" && if %today%"==02" call :Aug30 if %thismonth%"==09" && if %today%"==03" call :Aug31 if %thismonth%"==10" && if %today%"==01" call :Sep28 if %thismonth%"==10" && if %today%"==02" call :Sep29 if %thismonth%"==10" && if %today%"==03" call :Sep3o if %thismonth%"==10" && if %today%"==01" call :Sep28 if %thismonth%"==10" && if %today%"==02" call :Sep29 if %thismonth%"==10" && if %today%"==03" call :Sep3o if %thismonth%"==11" && if %today%"==01" call :Oct29 if %thismonth%"==11" && if %today%"==02" call :Oct30 if %thismonth%"==11" && if %today%"==03" call :Oct31 if %thismonth%"==12" && if %today%"==01" call :Nov29 if %thismonth%"==12" && if %today%"==02" call :Nov30 if %thismonth%"==12" && if %today%"==03" call :Nov31 goto :eof Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 24. November 2004 Melden Teilen Geschrieben 24. November 2004 Das mit && war ein Fehler. call :today call :offsetdays call :delequals pause :today :: aktuelles Datum aufbereiten echo %date% set today=%date:~3,2% echo %today% set thismonth=%date:~6,2% echo %thismonth% set thisyear=%date:~9,4% echo %thisyear% :goto :eof :offsetdays set /a offsetdays=3 echo %offsetdays% goto :eof :delequals :: Löschdatum aufbereiten if %thismonth%"==01" if %today%"==01" call :Dec29 if %thismonth%"==01" if %today%"==02" call :Dec30 if %thismonth%"==01" if %today%"==03" call :Dec31 if %thismonth%"==02" if %today%"==01" call :Jan29 if %thismonth%"==02" if %today%"==02" call :Jan30 if %thismonth%"==02" if %today%"==03" call :Jan31 if %thismonth%"==03" if %today%"==01" call :Feb26 if %thismonth%"==03" if %today%"==02" call :Feb27 if %thismonth%"==03" if %today%"==03" call :Feb38 if %thismonth%"==04" if %today%"==01" call :Mar29 if %thismonth%"==04" if %today%"==02" call :Mar30 if %thismonth%"==04" if %today%"==03" call :Mar31 if %thismonth%"==05" if %today%"==01" call :Apr30 if %thismonth%"==05" if %today%"==02" call :Apr29 if %thismonth%"==05" if %today%"==03" call :Apr28 if %thismonth%"==06" if %today%"==01" call :May29 if %thismonth%"==06" if %today%"==02" call :May30 if %thismonth%"==06" if %today%"==03" call :May31 if %thismonth%"==07" if %today%"==01" call :Jun28 if %thismonth%"==07" if %today%"==02" call :Jun29 if %thismonth%"==07" if %today%"==03" call :Jun30 if %thismonth%"==08" if %today%"==01" call :Jul29 if %thismonth%"==08" if %today%"==02" call :Jul30 if %thismonth%"==08" if %today%"==03" call :Jul31 if %thismonth%"==09" if %today%"==01" call :Aug29 if %thismonth%"==09" if %today%"==02" call :Aug30 if %thismonth%"==09" if %today%"==03" call :Aug31 if %thismonth%"==10" if %today%"==01" call :Sep28 if %thismonth%"==10" if %today%"==02" call :Sep29 if %thismonth%"==10" if %today%"==03" call :Sep3o if %thismonth%"==10" if %today%"==01" call :Sep28 if %thismonth%"==10" if %today%"==02" call :Sep29 if %thismonth%"==10" if %today%"==03" call :Sep3o if %thismonth%"==11" if %today%"==01" call :Oct29 if %thismonth%"==11" if %today%"==02" call :Oct30 if %thismonth%"==11" if %today%"==03" call :Oct31 if %thismonth%"==12" if %today%"==01" call :Nov29 if %thismonth%"==12" if %today%"==02" call :Nov30 if %thismonth%"==12" if %today%"==03" call :Nov31 goto :eof :Dec29 echo %today% pause Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 24. November 2004 Melden Teilen Geschrieben 24. November 2004 Verwendung von Klammer. Das Call hinter den Bedingungen wurden durch Goto ersetzt um unnötige Rücksprünge zu vermeiden. call :today call :offsetdays call :delequals pause :today :: aktuelles Datum aufbereiten echo %date% set today=%date:~3,2% echo %today% set thismonth=%date:~6,2% echo %thismonth% set thisyear=%date:~9,4% echo %thisyear% :goto :eof :offsetdays set /a offsetdays=3 echo %offsetdays% goto :eof :delequals :: Löschdatum aufbereiten if %thismonth%"==01" ( if %today%"==01" call :Dec29 if %today%"==02" call :Dec30 if %today%"==03" call :Dec31 ) if %thismonth%"==02" ( if %today%"==01" goto :Jan29 if %today%"==02" goto :Jan30 if %today%"==03" goto :Jan31 ) if %thismonth%"==03" ( if %today%"==01" goto :Feb26 if %today%"==02" goto :Feb27 if %today%"==03" goto :Feb38 ) if %thismonth%"==04" ( if %today%"==01" goto :Mar29 if %today%"==02" goto :Mar30 if %today%"==03" goto :Mar31 ) if %thismonth%"==05" ( if %today%"==01" goto :Apr30 if %today%"==02" goto :Apr29 if %today%"==03" goto :Apr28 ) if %thismonth%"==06" ( if %today%"==01" goto :May29 if %today%"==02" goto :May30 if %today%"==03" goto :May31 ) if %thismonth%"==07" ( if %today%"==01" goto :Jun28 if %today%"==02" goto :Jun29 if %today%"==03" goto :Jun30 ) if %thismonth%"==08" ( if %today%"==01" goto :Jul29 if %today%"==02" goto :Jul30 if %today%"==03" goto :Jul31 ) if %thismonth%"==09" ( if %today%"==01" goto :Aug29 if %today%"==02" goto :Aug30 if %today%"==03" goto :Aug31 ) if %thismonth%"==10" ( if %today%"==01" goto :Sep28 if %today%"==02" goto :Sep29 if %today%"==03" goto :Sep3o ) if %thismonth%"==10" ( if %today%"==01" goto :Sep28 if %today%"==02" goto :Sep29 if %today%"==03" goto :Sep3o ) if %thismonth%"==11" ( if %today%"==01" goto :Oct29 if %today%"==02" goto :Oct30 if %today%"==03" goto :Oct31 ) if %thismonth%"==12" ( if %today%"==01" goto :Nov29 if %today%"==02" goto :Nov30 if %today%"==03" goto :Nov31 ) goto :eof :Dec29 dir c:\dec*.txt pause Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 24. November 2004 Melden Teilen Geschrieben 24. November 2004 call :today call :offsetdays call :delequals pause :today :: aktuelles Datum aufbereiten echo %date% set today=%date:~3,2% echo %today% set thismonth=%date:~6,2% echo %thismonth% set thisyear=%date:~9,4% echo %thisyear% :goto :eof :offsetdays set /a offsetdays=3 echo %offsetdays% goto :eof :delequals :: Löschdatum aufbereiten if %thismonth%"==01" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %thismonth%"==02" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %thismonth%"==03" ( if %today%"==01" set delday=26 if %today%"==02" set delday=27 if %today%"==03" set delday=28 ) if %thismonth%"==04" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %thismonth%"==05" ( if %today%"==01" set delday=30 if %today%"==02" set delday=29 if %today%"==03" set delday=28 ) if %thismonth%"==06" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %thismonth%"==07" ( if %today%"==01" set delday=28 if %today%"==02" set delday=29 if %today%"==03" set delday=30 ) if %thismonth%"==08" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %thismonth%"==09" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %thismonth%"==10" ( if %today%"==01" set delday=28 if %today%"==02" set delday=29 if %today%"==03" set delday=3o ) if %thismonth%"==10" ( if %today%"==01" set delday=28 if %today%"==02" set delday=29 if %today%"==03" set delday=3o ) if %thismonth%"==11" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %thismonth%"==12" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) for /f "tokens=1 skip=6" %%i in ('dir c:\*.*') do set filedate=%%i & call :echofd :echofd echo %filedate% goto :eof Zitieren Link zu diesem Kommentar
anne_03 10 Geschrieben 25. November 2004 Autor Melden Teilen Geschrieben 25. November 2004 Zu diesem Code müsstest du mir aber noch eine kurze Erklärung geben. Die einzige Konstante im Dateinamen ist tatsächlich P04. Der Dateiname kann ansonsten so variabel sein, wie ich es gestern schon erwähnte. Sowohl die Dateiendung als auch der Name. Die Aufgabenstellung hörte sich anfangs sehr simpel an. Aber ich habe ja gemerkt, dass sie genau das nicht ist. Danke schon mal. Anne Zitieren Link zu diesem Kommentar
Apotheker 10 Geschrieben 25. November 2004 Melden Teilen Geschrieben 25. November 2004 Hallo noch mal, es gibt einen einfacheren Weg, wenn die Dateien wirklich immer genau nach 3 Tagen gelöscht werden sollen und zwischendurch nicht gebraucht werden. Dieses Script abends nach Dienstschluss auf dem Server per AT-Befehl laufen lassen: :: Zunächst die Daten von vorgestern löschen Del /Q D:\K\daten\tb\projekt_daten\gm\lst\*P06* Del /Q D:\K\daten\tb\projekt_daten\gn\lst\*P06* Del /Q D:\K\daten\tb\projekt_daten\dat\*P06* :: Jetzt die von gestern umbenennen Ren D:\K\daten\tb\projekt_daten\gm\lst\*P05* *P06* Ren D:\K\daten\tb\projekt_daten\gn\lst\*P05* *P06* Ren D:\K\daten\tb\projekt_daten\dat\*P05* *P06* :: Jetzt die von heute umbenennen Ren D:\K\daten\tb\projekt_daten\gm\lst\*P04* *P05* Ren D:\K\daten\tb\projekt_daten\gn\lst\*P04* *P05* Ren D:\K\daten\tb\projekt_daten\dat\*P04* *P05* Das kann man beliebig verlängern. Wenn Dir das weiterhilft bitte posten, dann können wir das noch verfeinern. MfG Apotheker Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 25. November 2004 Melden Teilen Geschrieben 25. November 2004 Hallo Anne, ich bin z.Z. im Aussendienst. Morgen habe ich einen vollen Kalender, auch abends. Ich werde das Programm wohl am Wochenende (Sonntag) erst weiterentwickeln.. Teste doch mal den Vorschlag vnon Apotheker. Gruß Edgar Zitieren Link zu diesem Kommentar
anne_03 10 Geschrieben 26. November 2004 Autor Melden Teilen Geschrieben 26. November 2004 leider geht es so nicht, da P04 eine konstante Größe innerhalb des Dateinamens ist. Dies kommt von den Hostnamen die P0412 oder P0413 heißen. Mir ist hier auch nicht klar, wie du herausfindest, wann die Datei älter als drei Tage ist. Habe ich das nicht richtig verstanden? lg anne Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 26. November 2004 Melden Teilen Geschrieben 26. November 2004 Ich habe gerade eine kleine Auszeit gehabt. Da habe ich mal am Programm weitergearbeitet. @echo off call :today call :offsetdays call :delequals pause :today :: aktuelles Datum aufbereiten echo %date% set today=%date:~3,2% echo %today% set thismonth=%date:~6,2% echo %thismonth% set thisyear=%date:~9,4% echo %thisyear% :goto :eof :offsetdays set /a offsetdays=3 echo %offsetdays% goto :eof :delequals :: Löschdatum aufbereiten if %thismonth%"==01" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %thismonth%"==02" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %thismonth%"==03" ( if %today%"==01" set delday=26 if %today%"==02" set delday=27 if %today%"==03" set delday=28 ) if %thismonth%"==04" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %thismonth%"==05" ( if %today%"==01" set delday=30 if %today%"==02" set delday=29 if %today%"==03" set delday=28 ) if %thismonth%"==06" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %thismonth%"==07" ( if %today%"==01" set delday=28 if %today%"==02" set delday=29 if %today%"==03" set delday=30 ) if %thismonth%"==08" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %thismonth%"==09" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %thismonth%"==10" ( if %today%"==01" set delday=28 if %today%"==02" set delday=29 if %today%"==03" set delday=3o ) if %thismonth%"==10" ( if %today%"==01" set delday=28 if %today%"==02" set delday=29 if %today%"==03" set delday=3o ) if %thismonth%"==11" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %thismonth%"==12" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) for /f "tokens=1,4 skip=6" %%i in ('dir /o:d c:\*.*') do set filedate=%%i & set filename=%%j & call :echofd pause :echofd if %filename% equ Bytes goto :eof echo %filedate% %filename% goto :eof Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 26. November 2004 Melden Teilen Geschrieben 26. November 2004 echo %filedate:~0,2% %filename% So wird nur Tagesnummer angezeigt. Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 26. November 2004 Melden Teilen Geschrieben 26. November 2004 if %delday% equ %filedate:~0,2% echo %filename% Es werden nur die Dateien mit dem Löschdatum ausgegeben. Das echo kann durch del ersetzt werden. Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 27. November 2004 Melden Teilen Geschrieben 27. November 2004 Jetzt kommen wir der Sache schon näher. rem @echo off :today :: aktuelles Datum aufbereiten echo %date% set today=%date:~3,2% echo %today% set thismonth=%date:~6,2% echo %thismonth% set thisyear=%date:~9,4% echo %thisyear% :: Löschdatum aufbereiten if %thismonth%"==01" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %thismonth%"==02" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %thismonth%"==03" ( if %today%"==01" set delday=26 if %today%"==02" set delday=27 if %today%"==03" set delday=28 ) if %thismonth%"==04" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %thismonth%"==05" ( if %today%"==01" set delday=30 if %today%"==02" set delday=29 if %today%"==03" set delday=28 ) if %thismonth%"==06" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %thismonth%"==07" ( if %today%"==01" set delday=28 if %today%"==02" set delday=29 if %today%"==03" set delday=30 ) if %thismonth%"==08" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %thismonth%"==09" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %thismonth%"==10" ( if %today%"==01" set delday=28 if %today%"==02" set delday=29 if %today%"==03" set delday=3o ) if %thismonth%"==10" ( if %today%"==01" set delday=28 if %today%"==02" set delday=29 if %today%"==03" set delday=3o ) if %thismonth%"==11" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %thismonth%"==12" ( if %today%"==01" set delday=29 if %today%"==02" set delday=30 if %today%"==03" set delday=31 ) if %today% lss 10 set today=%today:~1,1% echo %today% if %today% gtr 3 set /a delday=%today%-3 echo %delday% if %delday% lss 10 set delday=0%delday% echo %delday% :fetchline for /f "tokens=1,4 skip=6" %%i in ('dir /o:d c:\*.*') do set filedate=%%i & set filename=%%j & call :delfile :delfile rem echo %filedate% %filename% if %filename% equ Bytes goto :eof if %delday% equ %filedate:~0,2% echo %filename% if %delday% equ %filedate:~0,2% pause if %delday% equ %filedate:~0,2% del %filename% goto :eof Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 27. November 2004 Melden Teilen Geschrieben 27. November 2004 Hallo Anne, ich denke mal, das war es. Man könnte noch einige Zeilen einsparen bei der Selektion. Das ist aber nicht wesentlich. Falls du magst, teste das Prog mal aus auf Funktionsfähigkeit. Falls du zur Syntax etc. Fragen hast. frage bitte. Gruß Edgar Zitieren Link zu diesem Kommentar
anne_03 10 Geschrieben 29. November 2004 Autor Melden Teilen Geschrieben 29. November 2004 Hi Edgar! Vielen Dank, dass du dir echt Gedanken zu meinem Problem machst. Mir fehlt irgendwie noch die Möglichkeit, den Dateinamen auf *P04* einzugrenzen. Wenn ich den Pfad der zulöschenden Dateien angebe dann so, oder: 'dir /o:d c:\*.* 'dir /o:d - (o:d - wozu ist das gut?) c:\*.* dafür K:\daten\..? Gruß Anne Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.