Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch Variable mit Kalenderwoche oder ähnliches

Frage Entwicklung Batch & Shell

Mitglied: madmad

madmad (Level 1) - Jetzt verbinden

04.01.2009, aktualisiert 18.10.2012, 13659 Aufrufe, 5 Kommentare

Im Rahmen eines Backupscripts brauch ich eine Variable, die eine Woche lang den gleichen Wert hat und danach um eins höher ist also z.B.:

05.01.09 - 11.01.09 -> %woche% = 1
12.01.09 - 18.01.09 -> %woche% = 2
19.01.09 - 25.01.09 -> %woche% = 3
...

Spontan habe ich überlegt die Kalenderwoche zu nehmen (da die Tatsache dass sie nach ein Jahr von vorne losgehen irelevant ist), allerdings habe ich keine Möglichkeit gefunden die Kalenderwoche auszugeben.

Also habe ich überlegt ob es eine Variable wie "tage/stunden/secunden seid der Unixzeit", gibt dabei ist mir aufgefallen das es im Batch eigentlich nur %time% und %date% gibt.

Da ich die Ausgabe von %date% leider nicht direkt verwenden kann müsste ich sie also irgend wie so umwandeln das sie mir die Anzahl der Montage bzw. Sonntage seit Datum xy ausgibt. Dies übersteigt allerdings meine Fähigkeiten ...

Kann mir also jemand von euch zeigen wie ich sowas realisieren kann, oder kennt jemand von euch einen einfacherren Lösungweg als meine Idee?

Vielen Dank schon mal
Mitglied: bastla
04.01.2009, aktualisiert 18.10.2012
Hallo madmad und willkommen im Forum!

Darf ich Dich zum Thema "Kalenderwoche" gleich zum diesbezüglichen Standardwerk (mindestens für den deutschsprachigen Raum ) von Biber verweisen: Workshop Batch for Runaways Part III Datums- und Zeitvariablen im Batch ...

Solltest Du es sehr eilig haben:
01.
@echo off & setlocal 
02.
set G=%temp%\GetWeek.vbs 
03.
>%G% echo WScript.Echo Datepart("ww",WScript.Arguments(0),2) 
04.
for /f %%i in ('cscript //nologo %G% %date%') do set KalWo=%%i 
05.
echo %KalWo%
Zum Testen kannst Du %date% in der Zeile 4 auch durch eine Datumsangabe im Format "TT.MM.JJJJ" ersetzen.

Grüße
bastla
Bitte warten ..
Mitglied: madmad
04.01.2009 um 19:44 Uhr
Ok danke, dass ist genau das was ich gesucht habe.
Den workshop werde ich mir mal anschauen wenn ich viel zeit hab.
Habe den gerade mal überflogen und ich muss schon sagen, großes Lob an Biber...

Vielen Danck
Bitte warten ..
Mitglied: RoadRacer82
23.10.2016 um 14:27 Uhr
KalenderWoche (Mo-So) per Batch

01.
@ECHO OFF 
02.
setlocal 
03.
chcp 1252>nul 
04.
 
05.
REM KalenderWoche (Mo-SO) 
06.
REM Datum 
07.
set /A d=%date:~0,2% 
08.
set /A m=%date:~3,2% 
09.
set /A y=%date:~6,4% 
10.
 
11.
REM Tag des Jahres 
12.
if %m% == 1 set /A DoY=d 
13.
if %m% == 2 set /A DoY=d+31 
14.
if %m% == 3 set /A DoY=d+59 
15.
if %m% == 4 set /A DoY=d+90 
16.
if %m% == 5 set /A DoY=d+120 
17.
if %m% == 6 set /A DoY=d+151 
18.
if %m% == 7 set /A DoY=d+181 
19.
if %m% == 8 set /A DoY=d+212 
20.
if %m% == 9 set /A DoY=d+243 
21.
if %m% == 10 set /A DoY=d+273 
22.
if %m% == 11 set /A DoY=d+304 
23.
if %m% == 12 set /A DoY=d+334 
24.
 
25.
REM Schaltjahr? 
26.
set /A LY=(y/4)*4 
27.
if %y% NEQ %LY% goto noLY 
28.
if %m% GTR 2 set /A DoY=DoY+1 
29.
 
30.
:noLY 
31.
REM Tag der Woche (Sonntag = 0) 
32.
for /f %%g in ('wmic path win32_localtime get dayofweek^|findstr /v /r "^$"') do (set DoW=%%g) 
33.
REM (Sonntag = 7) 
34.
if %DoW% == 0 set /A DoW=7 
35.
 
36.
REM KW 
37.
set /A nSd=DoY+(7-DoW) 
38.
set /A KW=nSd/7 
39.
set /A delta=nSd-(KW*7) 
40.
if %delta% GTR 3 set /A KW=KW+1 
41.
 
42.
REM führedne Null 
43.
if %KW% LSS 10 set O=0 
44.
 
45.
echo.KW = %O%%KW% 
46.
 
47.
PAUSE 
48.
chcp 850>nul 
49.
endlocal 
50.
EXIT
Bitte warten ..
Mitglied: RoadRacer82
23.10.2016 um 14:53 Uhr
Vorgehen:
Tag des Jahres berechnen ,im falle von von Schaltjahren +1 (ab März).
Tag des Jahres zum nächsten Sonntag "aufrunden" und Anzahl der ganzen Wochen berechnen (Batch rundet ja immer ab).
Delta (Tage von Jahresbeginn zu Wochenanfang) berechnen, wenn Delta > 3 dann Wochen+1 (weil dann die angefangene ja Woche mitzählt).
Führende 0 einfügen wenn KW < 10.
Es bleibt der Makel von KW = 00 z.B. für die ersten 3 Tage diesen Jahres.
Wenn ich mal wieder Langeweile habe wird dann KW 52/53 und als zusätzliche Information das Vorjahr angezeigt.
Bitte warten ..
Mitglied: rubberman
23.10.2016 um 15:20 Uhr
Hallo RoadRacer82.

Der Thread ist uralt und das Problem ist rein mathematisch und wurde längst gelöst.
ritchielawrence.github.io/batchfunctionlibrary/
01.
@echo off &setlocal 
02.
 
03.
set /a "yy=2016,mm=10,dd=23" 
04.
call :DateToWeek %yy% %mm% %dd% yn cw dw 
05.
echo Jahr %yn% 
06.
echo Woche %cw% 
07.
echo Tag der Woche %dw% 
08.
pause 
09.
exit /b 
10.
 
11.
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  
12.
 :DateToWeek %yy% %mm% %dd% yn cw dw 
13.
 :: 
14.
 :: By:   Ritchie Lawrence, Updated 2002-11-20. Version 1.1 
15.
 :: 
16.
 :: Func: Returns an ISO 8601 Week date from a calendar date. 
17.
 ::       For NT4/2000/XP/2003. 
18.
 ::  
19.
 :: Args: %1 year component to be converted, 2 or 4 digits (by val) 
20.
 ::       %2 month component to be converted, leading zero ok (by val) 
21.
 ::       %3 day of month to be converted, leading zero ok (by val) 
22.
 ::       %4 var to receive year, 4 digits (by ref) 
23.
 ::       %5 var to receive calendar week, 2 digits, 01 to 53 (by ref) 
24.
 ::       %6 var to receive day of week, 1 digit, 1 to 7 (by ref) 
25.
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
26.
 setlocal ENABLEEXTENSIONS 
27.
 set yy=%1&set mm=%2&set dd=%3 
28.
 if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%) 
29.
 set /a dd=100%dd%%%100,mm=100%mm%%%100 
30.
 set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,Jd=153*m+2 
31.
 set /a Jd=Jd/5+dd+y*365+y/4-y/100+y/400-32045 
32.
 set /a y=yy+4798,Jp=y*365+y/4-y/100+y/400-31738,t=Jp+3,Jp=t-t%%7 
33.
 set /a y=yy+4799,Jt=y*365+y/4-y/100+y/400-31738,t=Jt+3,Jt=t-t%%7 
34.
 set /a y=yy+4800,Jn=y*365+y/4-y/100+y/400-31738,t=Jn+3,Jn=t-t%%7 
35.
 set /a Jr=%Jp%,yn=yy-1,yn+=Jd/Jt,yn+=Jd/Jn 
36.
 if %Jd% GEQ %Jn% (set /a Jr=%Jn%) else (if %Jd% GEQ %Jt% set /a Jr=%Jt%) 
37.
 set /a diff=Jd-Jr,cw=diff/7+1,wd=diff%%7,wd+=1 
38.
 if %cw% LSS 10 set cw=0%cw% 
39.
 endlocal&set %4=%yn%&set %5=%cw%&set %6=%wd%&goto :EOF 
40.
 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Grüße
rubberman
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Variable setzten mit Leerzeichen (3)

Frage von Marlon1 zum Thema Batch & Shell ...

Batch & Shell
Batch: Variable Expansion in einer FOR-Schleife (9)

Frage von .Sessl zum Thema Batch & Shell ...

Batch & Shell
gelöst In Batch variable DOS-Funktion von "größer" und "kleiner" Zeichen unterdrücken (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...