marsu2
Goto Top

Batch der nur am Sonntag ausgeführt wird

Hallo ich beschäftige mich gerade das erste mal mit batch dateien.

Ich habe es bisher geschaft mit den Antworten aus diesem Forum und einer kleinen ftp .exe es so hinzubekommen, dass in einem Ordner alle mp3 kleiner als x gelöscht werden
und das danach die verbleibenden mp3 auf einen Server geladen werden.

setlocal
for %%i in (C:\MP3Ordner\*.mp3) do if %%~zi LSS 512000 del "%%i" 
fsync upload *.mp3 -u ftp://User:Passwort@ftp.domain.de/
pause

Nun will ich es so hinbekommen das der upload automatisch jeden Sonntag beim runterfahren des PC passiert.
Aber eben nicht die Woche über, wenn man den Rechner runterfährt.

Ich brauche also eine Abfrage die das aktuelle Datum mit dem Soll (Sonntag) vergleicht und wenn die Werte gleich sind die weiteren Parameter ausführt und ansonsten die batch einfach beendet ohne etwas zu tun.

Ich habe mir aus einem anderen Thread diesen Codeschnippsel kopiert, komme damit aber nicht weiter.

REM Berechnung des Wochentages 
REM Hier eventuell Reihenfolge und delims anpassen 
REM ################## 
FOR /F "tokens=1,2,3 delims=." %%a in ('echo %date%') do set yy=%%c & set mm=%%b & set dd=%%a    
set /a "TwoDigitYearMax=2038%%1000"    
if 1%yy% LSS 200 if 1%yy% LSS 1%TwoDigitYearMax% (set yy=20%yy%) else (set yy=19%yy%)  
set /a dd=100%dd%%%100,mm=100%mm%%%100 
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,dow=153*m+2  
set /a dow=dow/5+dd+y*365+y/4-y/100+y/400-2472630,dow%%=7,dow+=1  
REM Zuordnung Wochentag 
REM ################## 
If %dow% equ 1 set "WoTa=Montag"    
If %dow% equ 2 set "WoTa=Dienstag"    
If %dow% equ 3 set "WoTa=Mittwoch"    
If %dow% equ 4 set "WoTa=Donnerstag"    
If %dow% equ 5 set "WoTa=Freitag"    
If %dow% equ 6 set "WoTa=Samstag"    
If %dow% equ 7 set "WoTa=Sonntag"   
REM Gibt zur Kontrolle den Wochentag aus 
REM ################## 
REM echo Heute ist %WoTa% 
pause

Der Wochentag wird richtig berechnet , ich bräuchte jetzt eine "wenn dann" abfrage

If %dow% equ 7 do
steig da aber nicht mehr durch, vielleicht ist das auch viel zu kompliziert gemacht?

Schon mal lieben dank.

Content-Key: 173114

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

Ausgedruckt am: 19.03.2024 um 08:03 Uhr

Mitglied: bastla
bastla 14.09.2011 um 16:55:49 Uhr
Goto Top
Hallo marsu2 und willkommen im Forum!

Es sollte doch genügen, alles ab Zeile 10 durch
if %dow% neq 7 goto :eof
REM Hurra, es ist Sonntag!
for %%i in (C:\MP3Ordner\*.mp3) do if %%~zi LSS 512000 del "%%i"    
fsync upload *.mp3 -u ftp://User:Passwort@ftp.domain.de/ 
pause
zu ersetzen ...

Grüße
bastla
Mitglied: 99045
99045 14.09.2011 um 17:27:02 Uhr
Goto Top
Du könntest die Abfrage noch vereinfachen, indem du VBScript nutzt:
@echo off
@echo wscript.echo Weekday("%date%")   > dow1.vbs  
for /f %%a in ('cscript /nologo dow1.vbs') do set "wt=%%a"  
del dow1.vbs
@echo Heute ist der %wt%. Tag der Woche (beginnend bei 0 = Sonntag)
if %wt% gtr 0 goto :eof

Rem hier dein Code zur Ausführung.
Mitglied: marsu2
marsu2 15.09.2011 um 23:37:35 Uhr
Goto Top
ach geil ein herzliches Dankeschön schon mal, ich wollte wirklich nur eine batch Datei nutzen deswegen habe ich blastas genommen.

Das man den Rattenschawanz mit der Deklaration der Variablen nicht brauchen würde war mir schon klar, mir fehlte bloß das
neq
und das
:eof
Habe ich mir jetzt angelesen.

Danke