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, 14448 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 ..
Ähnliche Inhalte
Microsoft Office
gelöst VBA Textformatierung Kalenderwoche (3)

Frage von Florian86 zum Thema Microsoft Office ...

Microsoft Office
gelöst VBA - aktuelle Kalenderwoche ermitteln (3)

Frage von Ghost108 zum Thema Microsoft Office ...

Batch & Shell
gelöst Grosses Variablen Problem ( Batch) (30)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst FOR Loop Variablen ( Batch ) (2)

Frage von clragon zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
CNC Maschinen verlieren Netzwerkverbindung (kurioser Fehler) (22)

Frage von NoHopeNoFear zum Thema LAN, WAN, Wireless ...

Webentwicklung
Aktuellen Mitarbeiter auf Homepage anzeigen (13)

Frage von alemanne21 zum Thema Webentwicklung ...

Windows Server
gelöst Parameter Übergabe Terminal Server (9)

Frage von ThomasKern zum Thema Windows Server ...

Batch & Shell
Anfängerfragen - Powershell - Mailboxvertretung im Pulk einrichten (8)

Frage von Yoshimitsu zum Thema Batch & Shell ...