Jump to content

Batchprogrammierung


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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

Link zu diesem Kommentar
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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar
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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...