Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
dos:start [2013/06/27 22:46] Admin |
dos:start [2018/01/24 14:08] (aktuell) Admin |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== DOS ====== | + | ====== DOS/CMD-Scripts ====== |
- | + | ||
- | Commandline oder auch Commandozeile unter Windows | + | |
- | + | ||
- | + | ||
- | Wochentag eines Datums bestimmen | + | |
- | + | ||
- | Hier ein Commando - Script ( DOS - Batch ) welches den Wochentag eines beliebigen Datums bestimmt... | + | |
- | + | ||
- | weekday.cmd kann den eigenen Bedürfnissen angepasst werden und übergibt die Parameter als SET Variablen | + | |
- | + | ||
- | Für die Suchmaschinen: Commando, Script, cmd, Windows, DOS, Batch, bat, Wochentag, beliebiges Datum bestimmen, berechnen | + | |
- | + | ||
- | Zuvor noch ein kleines Script zum testen: | + | |
- | + | ||
- | <file dos call_weekday.cmd> | + | |
- | @echo off | + | |
- | setlocal ENABLEDELAYEDEXPANSION enableextensions | + | |
- | for /l %%a in (0,1,99) do ( | + | |
- | call weekday.cmd 31.12.%%a | + | |
- | echo !_date! !_ww! !_cwwy! | + | |
- | ) | + | |
- | </file> | + | |
- | + | ||
- | + | ||
- | CODE: weekday.cmd | + | |
- | + | ||
- | <file dos weekday.cmd> | + | |
- | @echo off | + | |
- | setlocal | + | |
- | set _thisfile=weekday.cmd | + | |
- | REM ############################################################################ | + | |
- | REM | + | |
- | REM weekday.cmd created by Mark Wolfgruber | + | |
- | REM | + | |
- | REM Feature Requests: | + | |
- | REM - i'm searching for a good translation | + | |
- | REM - calculate x-days ago | + | |
- | REM - calculate in x-days | + | |
- | REM - no more open requests | + | |
- | REM | + | |
- | REM open BUGs: | + | |
- | REM - no more known bugs at the moment | + | |
- | REM | + | |
- | REM Version 0.0.3c Mark Wolfgruber 28.04.2009 | + | |
- | REM - BUG: Year 00-09 was 20000 - 20009 now it is 2000 - 2009 | + | |
- | REM - BUG: Weekday at the end of the year is possible in cw 1 | + | |
- | REM - new option /clear | + | |
- | REM - new option 0 | + | |
- | REM - modify help file | + | |
- | REM | + | |
- | REM Version 0.0.3 Mark Wolfgruber 20.04.2009 | + | |
- | REM - Variable _cwy replace _cw (Format: WEEK/YEAR) | + | |
- | REM - new Variable _cw (Format: WEEK) | + | |
- | REM - add a help | + | |
- | REM - validate the date | + | |
- | REM - _language_default=de | + | |
- | REM - add _thisfile | + | |
- | REM - BUG: Year 0-9 was 200 - 209 now it is 2000 - 2009 | + | |
- | REM | + | |
- | REM Version 0.0.2 Mark Wolfgruber 15.04.2009 | + | |
- | REM - BUG-Behebung: Eingabe jetzt in _date (statt in _input) | + | |
- | REM - Ergänze ein paar REM-Zeilen | + | |
- | REM - Tag des Jahres berechnen | + | |
- | REM - Schaltjahre (en: leap year) | + | |
- | REM ~ sind alle Jahre, deren Jahreszahl ohne Rest durch vier teilbar sind. | + | |
- | REM Der 29. Februar wird als Schalttag eingefügt. | + | |
- | REM Alle Jahre, welche ohne Rest durch 100 teilbar sind, sind keine Schaltjahre. | + | |
- | REM Ausgenommen von dieser Schaltjahresregelung sind volle Jahrhunderte, die | + | |
- | REM nicht ohne Rest durch 400 teilbar sind. | + | |
- | REM (2000 war ein Schaltjahr, 1900 nicht) | + | |
- | REM - Kalenderwoche berechnen | + | |
- | REM Grundlage: | + | |
- | REM http://de.wikipedia.org/wiki/Woche#Z.C3.A4hlweise_nach_DIN_1355_.2F_ISO_8601 | + | |
- | REM Formel zur Berechung der KW wurde von mir selbst entwickelt und | + | |
- | REM ist ggf. nochmal zu prüfen | + | |
- | REM Die Formel basiert auf der Annahme, dass der 4.1. immer in der KW 1 liegt | + | |
- | REM | + | |
- | REM Version 0.0.1 Mark Wolfgruber 14.04.2009 | + | |
- | REM | + | |
- | REM zweistellige Jahreszahlen 31-99 werden als 1931-1999 interprediert | + | |
- | REM zweistellige Jahreszahlen 00-30 werden als 2000-2030 interprediert | + | |
- | REM wird keine Jahreszahl angegeben wird das aktuelle Jahr verwendet | + | |
- | REM wird kein Monat angegeben wird das aktuelle Monat verwendet | + | |
- | REM wird kein Tag angegeben wird der aktuelle Tag verwendet | + | |
- | REM Z.Zt. findet keine Prüfung auf unplausible Tage statt | + | |
- | REM | + | |
- | REM Aufruf z.B. | + | |
- | REM für Heute: weekday.cmd %date% | + | |
- | REM für den 1. des Monats: weekday.cmd 1. oder weekday.cmd 0/1 | + | |
- | REM ############################################################################ | + | |
- | REM | + | |
- | REM Wochentagsberechnung nach Gauß ab 15.10.1582 | + | |
- | REM | + | |
- | REM Quelle der Formel: http://de.wikipedia.org/wiki/Gau%C3%9Fsche_Wochentagsformel | + | |
- | REM Umgesetzt in einem DOS-commandozeilen-Script nach einer Idee von Mark Wolfgruber | + | |
- | REM | + | |
- | REM Die Gaußsche Wochentagsformel ist eine Formel von Carl Friedrich Gauß | + | |
- | REM zur Berechnung des Wochentags anhand eines gegebenen Datums. | + | |
- | REM Sie wird häufig für die Berechnung der Wochentage in der Informatik eingesetzt. | + | |
- | REM Die Formel gilt von der Einführung des Gregorianischen Kalenders am 15. Oktober 1582 | + | |
- | REM an und prinzipiell solange, bis von diesen Kalenderregeln wieder abgewichen wird, | + | |
- | REM also bis zur nächsten Kalenderreform. | + | |
- | REM | + | |
- | REM ############################################################################ | + | |
- | + | ||
- | :predifined_vars | + | |
- | REM if you want to set it befor starting the script please REMark this lines | + | |
- | + | ||
- | set _date= | + | |
- | set _language_default=de | + | |
- | REM set _language_output= | + | |
- | + | ||
- | :vars | + | |
- | if "%1" == "0" set _date=%date% | + | |
- | REM try an Autodetection | + | |
- | if "%1" == "" ( | + | |
- | echo %date% | find "." >nul && set _oslanguage=de&& if "%_language_output%"=="" set _language_output=de | + | |
- | echo %date% | find "/" >nul && set _oslanguage=en&& if "%_language_output%"=="" set _language_output=en | + | |
- | ) ELSE ( | + | |
- | if "%_language_output%"=="" echo %1 | find "/" >nul && set _language_output=en | + | |
- | echo %date% | find "/" >nul && set _oslanguage=en | + | |
- | if "%_language_output%"=="" echo %1 | find "." >nul && set _language_output=de | + | |
- | echo %date% | find "." >nul && set _oslanguage=de | + | |
- | ) | + | |
- | + | ||
- | REM define the output format if no enviroment is set | + | |
- | if "%_language_output%"=="" set _language_output=%_language_default% | + | |
- | + | ||
- | REM to define the os language (date format) | + | |
- | if %_oslanguage%=="" set _oslanguage=%_language_default% | + | |
- | + | ||
- | call :define_language_output_%_language_output% | + | |
- | + | ||
- | if not "%1"=="" set _date=%1 | + | |
- | if /I "%1"=="/h" goto help | + | |
- | if /I "%1"=="/help" goto help | + | |
- | if /I "%1"=="/?" goto help | + | |
- | if /I "%1"=="/clear" goto clear_vars | + | |
- | + | ||
- | if "%_date%"=="" set /p _date=%_ask_for_Date% [%date%]: | + | |
- | if "%_date%"=="" set _date=%date% | + | |
- | + | ||
- | set _date=%_date:-=/% | + | |
- | REM Autodetection Date-Input-Format | + | |
- | echo %_date% | find "/" >nul && set _language_input=en | + | |
- | echo %_date% | find "." >nul && set _language_input=de | + | |
- | + | ||
- | REM to define the input format | + | |
- | if "%_language_input%"=="" set _language_input=%_language_default% | + | |
- | + | ||
- | :main | + | |
- | call :split_date_%_language_input% | + | |
- | call :set_month_value | + | |
- | call :set_year_value | + | |
- | call :def_leapyear | + | |
- | call :calc_weekday | + | |
- | call :def_daysb4 | + | |
- | call :def_cwy | + | |
- | endlocal & set _www=%_www%& set _ww=%_ww%& set _w=%_w%&set _longdate=%_longdate%&set _language_output=%_language_output%&set _d=%_d%&set _dd=%_dd%&set _m=%_m%&set _mm=%_mm%&set _yy=%_yy%&set _yyyy=%_yyyy%&set _dayofyear=%_dayofyear%&set _leapyear=%_leapyear%&set _cw=%_cw%&set _cwy=%_cwy% | + | |
- | + | ||
- | call :format_output_date_strings | + | |
- | + | ||
- | REM call :show_set_enviroment_output | + | |
- | REM call :display | + | |
- | + | ||
- | goto end | + | |
- | + | ||
- | REM ############################################################################ | + | |
- | + | ||
- | ::functions | + | |
- | + | ||
- | :show_set_enviroment_output | + | |
- | echo. | + | |
- | echo SET Enviroment-Variables: | + | |
- | set _ | + | |
- | goto :EOF | + | |
- | + | ||
- | :format_output_date_strings | + | |
- | set _date=%_yyyy%-%_mm%-%_dd% | + | |
- | + | ||
- | if %_cw% LEQ 9 ( | + | |
- | set _cww=0%_cw% | + | |
- | set _cwwy=0%_cwy% | + | |
- | ) ELSE ( | + | |
- | set _cww=%_cw% | + | |
- | set _cwwy=%_cwy% | + | |
- | ) | + | |
- | if /I "%_language_output%"=="de" ( | + | |
- | set _longdate=%_www%, %_dd%.%_mm%.%_cent%%_yy% | + | |
- | ) ELSE ( | + | |
- | set _longdate=%_www%, %_mm%/%_dd%/%_cent%%_yy% | + | |
- | ) | + | |
- | + | ||
- | REM more examples ... | + | |
- | + | ||
- | rem set _datestr1=%_yyyy%-%_mm%-%_dd% | + | |
- | rem set _datestr2=%_yy%-%_mm%-%_dd% | + | |
- | rem set _datestr3=%_yyyy%%_mm%%_dd% | + | |
- | rem set _datestr4=%_yy%%_mm%%_dd% | + | |
- | rem set _datestr5=%_yy%%_m%%_d% | + | |
- | + | ||
- | goto :EOF | + | |
- | + | ||
- | :calc_weekday | + | |
- | set _d=x0%_dd% | + | |
- | set _d=%_d:x0=x% | + | |
- | set _d=%_d:x0=x% | + | |
- | set _d=%_d:x=% | + | |
- | set /a _d=%_d%+0 | + | |
- | if %_d% LSS 10 set _dd=0%_d% | + | |
- | if %_d% GTR 31 set _dd=31& set _d=31 | + | |
- | if %_m% EQU 2 ( | + | |
- | if %_leapyear% EQU 1 ( | + | |
- | if %_d% GTR 29 set _dd=29& set _d=29 | + | |
- | ) ELSE ( | + | |
- | if %_d% GTR 28 set _dd=28& set _d=28 | + | |
- | ) | + | |
- | ) | + | |
- | if %_m% EQU 4 if %_d% GTR 30 set _dd=30& set _d=30 | + | |
- | if %_m% EQU 6 if %_d% GTR 30 set _dd=30& set _d=30 | + | |
- | if %_m% EQU 9 if %_d% GTR 30 set _dd=30& set _d=30 | + | |
- | if %_m% EQU 11 if %_d% GTR 30 set _dd=30& set _d=30 | + | |
- | + | ||
- | + | ||
- | REM Formel: w = (d + [2,6 m – 0,2] + y + [y/4] + [c/4] – 2c) mod 7 | + | |
- | REM wobei für [2,6 m – 0,2] die Liste verwendet wird | + | |
- | REM Ich nutze den Umstand, dass das Ergebnis nur aus Ganzzahlen besteht | + | |
- | + | ||
- | set /a _w0=( %_d% + %_m_val% ) + ( %_y2% ) + ( %_y2% / 4 ) + ( %_c2% / 4 ) - ( 2 * %_c2% ) | + | |
- | set /a _w1=%_w0%/7 | + | |
- | set /a _w=%_w0% - ( %_w1% * 7 ) | + | |
- | if %_w% LSS 0 set /a _w=%_w%+7 | + | |
- | call :weekdays | + | |
- | goto :EOF | + | |
- | + | ||
- | :weekdays | + | |
- | REM Korrektur für Sonntag=7 mit &set _w=7 | + | |
- | if "%_w%"=="0" set _www=%_Sun%&set _ww=%_Su%&set _w=7 | + | |
- | if "%_w%"=="1" set _www=%_Mon%&set _ww=%_Mo% | + | |
- | if "%_w%"=="2" set _www=%_Tue%&set _ww=%_Tu% | + | |
- | if "%_w%"=="3" set _www=%_Wed%&set _ww=%_We% | + | |
- | if "%_w%"=="4" set _www=%_Thu%&set _ww=%_Th% | + | |
- | if "%_w%"=="5" set _www=%_Fri%&set _ww=%_Fr% | + | |
- | if "%_w%"=="6" set _www=%_Sat%&set _ww=%_Sa% | + | |
- | + | ||
- | goto :EOF | + | |
- | + | ||
- | :set_month_value | + | |
- | set _m=x0%_mm% | + | |
- | set _m=%_m:x0=x% | + | |
- | set _m=%_m:x0=x% | + | |
- | set _m=%_m:x=% | + | |
- | set /a _m=%_m%+0 | + | |
- | if %_m% LSS 10 set _mm=0%_m% | + | |
- | if %_m% GTR 12 set _mm=12& set _m=12 | + | |
- | + | ||
- | REM Liste für [2,6 m – 0,2] | + | |
- | if %_m% EQU 1 set _m_val=28 | + | |
- | if %_m% EQU 2 set _m_val=31 | + | |
- | if %_m% EQU 3 set _m_val=2 | + | |
- | if %_m% EQU 4 set _m_val=5 | + | |
- | if %_m% EQU 5 set _m_val=7 | + | |
- | if %_m% EQU 6 set _m_val=10 | + | |
- | if %_m% EQU 7 set _m_val=12 | + | |
- | if %_m% EQU 8 set _m_val=15 | + | |
- | if %_m% EQU 9 set _m_val=18 | + | |
- | if %_m% EQU 10 set _m_val=20 | + | |
- | if %_m% EQU 11 set _m_val=23 | + | |
- | if %_m% EQU 12 set _m_val=25 | + | |
- | goto :EOF | + | |
- | + | ||
- | :set_year_value | + | |
- | set _c=%_cent% | + | |
- | set _c2=%_c% | + | |
- | set _y=x0%_yy% | + | |
- | set _y=%_y:x0=x% | + | |
- | set _y=%_y:x0=x% | + | |
- | set _y=%_y:x=% | + | |
- | set /a _y=%_y%+0 | + | |
- | if %_y% LSS 10 set _yy=0%_y% | + | |
- | set _y2=%_y% | + | |
- | if %_m% EQU 1 call :set_correction | + | |
- | if %_m% EQU 2 call :set_correction | + | |
- | goto :EOF | + | |
- | + | ||
- | :set_correction | + | |
- | if "%_y2%"=="0" ( | + | |
- | set _y2=99 | + | |
- | set /a _c2=%_c2%-1 | + | |
- | ) ELSE ( | + | |
- | set /a _y2=%_y2%-1 | + | |
- | ) | + | |
- | goto :EOF | + | |
- | + | ||
- | :define_language_output_ | + | |
- | REM default if no datelanguage is set | + | |
- | + | ||
- | :define_language_output_en | + | |
- | set _ask_for_Date=Date | + | |
- | set _language_output=en | + | |
- | set _Su=Su | + | |
- | set _Mo=Mo | + | |
- | set _Tu=Tu | + | |
- | set _We=We | + | |
- | set _Th=Th | + | |
- | set _Fr=Fr | + | |
- | set _Sa=Sa | + | |
- | set _Sun=Sunday | + | |
- | set _Mon=Monday | + | |
- | set _Tue=Tuesday | + | |
- | set _Wed=Wednesday | + | |
- | set _Thu=Thursday | + | |
- | set _Fri=Friday | + | |
- | set _Sat=Saturday | + | |
- | goto :EOF | + | |
- | + | ||
- | :define_language_output_de | + | |
- | set _ask_for_Date=Bitte ein Datum eingeben | + | |
- | set _Su=So | + | |
- | set _Mo=Mo | + | |
- | set _Tu=Di | + | |
- | set _We=Mi | + | |
- | set _Th=Do | + | |
- | set _Fr=Fr | + | |
- | set _Sa=Sa | + | |
- | set _Sun=Sonntag | + | |
- | set _Mon=Montag | + | |
- | set _Tue=Dienstag | + | |
- | set _Wed=Mittwoch | + | |
- | set _Thu=Donnerstag | + | |
- | set _Fri=Freitag | + | |
- | set _Sat=Samstag | + | |
- | goto :EOF | + | |
- | + | ||
- | :split_date_ | + | |
- | REM default if no oslanguage is set | + | |
- | + | ||
- | :split_date_en | + | |
- | FOR /F "usebackq tokens=1,2,3,4,* delims=/" %%a IN (`echo %_date%`) DO ( | + | |
- | set _mm=%%a | + | |
- | set _dd=%%b | + | |
- | set _yyyy=%%c | + | |
- | ) | + | |
- | call :check_date | + | |
- | set /a _cent=%_yyyy%/100 | + | |
- | set /a _yy=%_yyyy% - ( %_cent% * 100 ) | + | |
- | goto :EOF | + | |
- | + | ||
- | :split_date_de | + | |
- | FOR /F "usebackq tokens=1,2,3,4,* delims=." %%a IN (`echo %_date%`) DO ( | + | |
- | set _dd=%%a | + | |
- | set _mm=%%b | + | |
- | set _yyyy=%%c | + | |
- | ) | + | |
- | call :check_date | + | |
- | set /a _cent=%_yyyy%/100 | + | |
- | set /a _yy=%_yyyy% - ( %_cent% * 100 ) | + | |
- | goto :EOF | + | |
- | + | ||
- | :check_date | + | |
- | if "%_dd%"=="" FOR /F " usebackq tokens=1,2,3,4,* delims=./" %%a IN (`echo %date%`) DO ( | + | |
- | if /I "%_oslanguage%"=="de" ( | + | |
- | set _dd=%%a | + | |
- | ) ELSE ( | + | |
- | set _dd=%%b | + | |
- | ) | + | |
- | ) | + | |
- | if %_dd% EQU 0 FOR /F " usebackq tokens=1,2,3,4,* delims=./" %%a IN (`echo %date%`) DO ( | + | |
- | if /I "%_oslanguage%"=="de" ( | + | |
- | set _dd=%%a | + | |
- | ) ELSE ( | + | |
- | set _dd=%%b | + | |
- | ) | + | |
- | ) | + | |
- | + | ||
- | if "%_mm%"=="" FOR /F " usebackq tokens=1,2,3,4,* delims=./" %%a IN (`echo %date%`) DO ( | + | |
- | if /I "%_oslanguage%"=="de" ( | + | |
- | set _mm=%%b | + | |
- | ) ELSE ( | + | |
- | set _mm=%%a | + | |
- | ) | + | |
- | ) | + | |
- | if %_mm% EQU 0 FOR /F " usebackq tokens=1,2,3,4,* delims=./" %%a IN (`echo %date%`) DO ( | + | |
- | if /I "%_oslanguage%"=="de" ( | + | |
- | set _mm=%%b | + | |
- | ) ELSE ( | + | |
- | set _mm=%%a | + | |
- | ) | + | |
- | ) | + | |
- | + | ||
- | if "%_yyyy%"=="" FOR /F " usebackq tokens=1,2,3,4,* delims=./" %%a IN (`echo %date%`) DO set _yyyy=%%c | + | |
- | + | ||
- | rem delete 0 as prefix | + | |
- | set _yyyy=x0%_yyyy% | + | |
- | set _yyyy=%_yyyy:x0=x% | + | |
- | set _yyyy=%_yyyy:x0=x% | + | |
- | set _yyyy=%_yyyy:x0=x% | + | |
- | set _yyyy=%_yyyy:x=% | + | |
- | if "%_yyyy%" == "" set _yyyy=0 | + | |
- | + | ||
- | if %_yyyy% LEQ 30 ( | + | |
- | if %_yyyy% LEQ 9 ( | + | |
- | set _yyyy=200%_yyyy% | + | |
- | ) ELSE ( | + | |
- | set _yyyy=20%_yyyy% | + | |
- | ) | + | |
- | ) ELSE ( | + | |
- | if %_yyyy% LEQ 99 set _yyyy=19%_yyyy% | + | |
- | ) | + | |
- | + | ||
- | goto :EOF | + | |
- | + | ||
- | :display | + | |
- | echo. | + | |
- | if /I "%_language_output%"=="de" ( | + | |
- | echo Der %_dd%.%_mm%.%_cent%%_yy% ist ein %_www% ^(%_w%=%_ww%^) | + | |
- | echo %_dayofyear%. Tag des Jahres in der KW %_cwy% | + | |
- | if %_leapyear% EQU 1 ( | + | |
- | echo Das Jahr %_yyyy% ist ein Schaltjahr | + | |
- | ) ELSE ( | + | |
- | echo Das Jahr %_yyyy% ist kein Schaltjahr | + | |
- | ) | + | |
- | ) ELSE ( | + | |
- | echo The %_mm%/%_dd%/%_cent%%_yy% is a %_www% ^(%_w%=%_ww%^) | + | |
- | echo %_dayofyear%. day of the year, calender week %_cwy% | + | |
- | if %_leapyear% EQU 1 ( | + | |
- | echo The Year %_yyyy% is a leap year | + | |
- | ) ELSE ( | + | |
- | echo The Year %_yyyy% is no leap year | + | |
- | ) | + | |
- | ) | + | |
- | echo. | + | |
- | goto :EOF | + | |
- | + | ||
- | :def_leapyear | + | |
- | setlocal | + | |
- | + | ||
- | set _leapyear=0 | + | |
- | set /a _l0=%_yyyy% / 4 | + | |
- | set /a _l1=%_yyyy% - (%_l0% * 4) | + | |
- | set /a _l0=%_yyyy% / 100 | + | |
- | set /a _l2=%_yyyy% - (%_l0% * 100) | + | |
- | set /a _l0=%_yyyy% / 400 | + | |
- | set /a _l3=%_yyyy% - (%_l0% * 400) | + | |
- | + | ||
- | if %_l1% EQU 0 set _leapyear=1 | + | |
- | if %_leapyear% EQU 1 if %_l2% EQU 0 set _leapyear=0 | + | |
- | if %_l3% EQU 0 set _leapyear=1 | + | |
- | + | ||
- | endlocal & set _leapyear=%_leapyear% | + | |
- | goto :EOF | + | |
- | + | ||
- | :def_daysb4 | + | |
- | REM daysb4 = days before (Anzahl der Tage die in den vorherigen Monaten waren) | + | |
- | if %_m% EQU 1 set _daysb4=0 | + | |
- | if %_m% EQU 2 set _daysb4=31 | + | |
- | if %_m% EQU 3 set /a _daysb4=31+28+%_leapyear% | + | |
- | if %_m% EQU 4 set /a _daysb4=31+28+31+%_leapyear% | + | |
- | if %_m% EQU 5 set /a _daysb4=31+28+31+30+%_leapyear% | + | |
- | if %_m% EQU 6 set /a _daysb4=31+28+31+30+31+%_leapyear% | + | |
- | if %_m% EQU 7 set /a _daysb4=31+28+31+30+31+30+%_leapyear% | + | |
- | if %_m% EQU 8 set /a _daysb4=31+28+31+30+31+30+31+%_leapyear% | + | |
- | if %_m% EQU 9 set /a _daysb4=31+28+31+30+31+30+31+31+%_leapyear% | + | |
- | if %_m% EQU 10 set /a _daysb4=31+28+31+30+31+30+31+31+30+%_leapyear% | + | |
- | if %_m% EQU 11 set /a _daysb4=31+28+31+30+31+30+31+31+30+31+%_leapyear% | + | |
- | if %_m% EQU 12 set /a _daysb4=31+28+31+30+31+30+31+31+30+31+30+%_leapyear% | + | |
- | + | ||
- | set /a _dayofyear=%_d% + %_daysb4% | + | |
- | + | ||
- | goto :EOF | + | |
- | + | ||
- | :def_cwy | + | |
- | REM cw = calender week (Kalenderwoche) | + | |
- | setlocal | + | |
- | set _wx=%_w% | + | |
- | set _mm=1 | + | |
- | set _dd=4 | + | |
- | + | ||
- | call :set_month_value | + | |
- | call :set_year_value | + | |
- | call :calc_weekday | + | |
- | set /a _last_monday=%_wx% - 1 | + | |
- | set /a _cw=((7 + 3 - %_last_monday% + (%_dayofyear% - 1) ) / 7 ) | + | |
- | if %_cw% EQU 0 set /a _yyyy=%_yyyy%-1 | + | |
- | if %_cw% EQU 0 call :def_leapyear | + | |
- | if %_cw% EQU 0 set /a _cw=((365 + %_leapyear% + 7 + 3 - %_last_monday% + (%_dayofyear% - 1) ) / 7 ) | + | |
- | + | ||
- | endlocal & set _cw=%_cw%& set _cwy=%_cw%/%_yyyy% | + | |
- | + | ||
- | REM if Calender week is 53 check if the day is in the first week of the new year | + | |
- | REM Rule: Begin or end the year with a Thursday the year have 53 weeks | + | |
- | Rem cwoy = calender weeks of year | + | |
- | Rem cwny = calender week new year | + | |
- | + | ||
- | if %_cw% EQU 53 ( | + | |
- | set _cwoy=53 | + | |
- | ) ELSE ( | + | |
- | set _cwoy=52 | + | |
- | ) | + | |
- | if %_cwoy% EQU 53 call :check_if_year_begin_with_thu | + | |
- | if %_cw% EQU 53 if %_cwoy% EQU 52 call :calc_new_cwy | + | |
- | + | ||
- | goto :EOF | + | |
- | + | ||
- | :calc_new_cwy | + | |
- | set _cw=1 | + | |
- | set /a _cwny=%_yyyy%+1 | + | |
- | set _cwy=%_cw%/%_cwny% | + | |
- | goto :EOF | + | |
- | + | ||
- | :check_if_year_begin_with_thu | + | |
- | REM check if year begins with a Thursday | + | |
- | setlocal | + | |
- | set _mm=1 | + | |
- | set _dd=1 | + | |
- | call :set_month_value | + | |
- | call :set_year_value | + | |
- | call :calc_weekday | + | |
- | if not %_w% EQU 4 call :check_if_year_ends_with_thu | + | |
- | endlocal & set _cwoy=%_cwoy% | + | |
- | goto :EOF | + | |
- | + | ||
- | :check_if_year_ends_with_thu | + | |
- | REM check if year ends with a Thursday | + | |
- | setlocal | + | |
- | set _mm=12 | + | |
- | set _dd=31 | + | |
- | call :set_month_value | + | |
- | call :set_year_value | + | |
- | call :calc_weekday | + | |
- | if not %_w% EQU 4 set _cwoy=52 | + | |
- | endlocal & set _cwoy=%_cwoy% | + | |
- | goto :EOF | + | |
- | + | ||
- | REM ############################################################################ | + | |
- | + | ||
- | :help | + | |
- | set _helpfile=%_thisfile%.help.txt | + | |
- | echo. > %_helpfile% || set _helpfile=%tmp%\%_thisfile%.help.txt | + | |
- | echo. > %_helpfile% || set _helpfile=^^^&2 | + | |
- | echo Help: %_thisfile% >> %_helpfile% | + | |
- | echo created by Mark Wolfgruber (600infos.de) >> %_helpfile% | + | |
- | echo i advice to copy the script to "%ProgramFiles%\scripts\date\" >> %_helpfile% | + | |
- | echo or better to your systempath e.g. in %%SystemRoot%%="%SystemRoot%\" >> %_helpfile% | + | |
- | echo. >> %_helpfile% | + | |
- | echo calculates the day of a week, calender week, leap year, day of year >> %_helpfile% | + | |
- | echo and export this into set enviroment variables >> %_helpfile% | + | |
- | echo Weekdays are 1=Monday, 7=Sunday >> %_helpfile% | + | |
- | echo You can use the german (dd.mm.yyyy) or english (mm/dd/yyyy) date format >> %_helpfile% | + | |
- | echo the year >> %_helpfile% | + | |
- | echo. >> %_helpfile% | + | |
- | echo FORMAT: %_thisfile% [Date] >> %_helpfile% | + | |
- | echo starting without option the script will ask for a date >> %_helpfile% | + | |
- | echo. >> %_helpfile% | + | |
- | echo this Help: %_thisfile% /help >> %_helpfile% | + | |
- | echo. >> %_helpfile% | + | |
- | echo INFO: >> %_helpfile% | + | |
- | echo (i'm searching for a good translation) >> %_helpfile% | + | |
- | echo zweistellige Jahreszahlen 31-99 werden als 1931-1999 interprediert >> %_helpfile% | + | |
- | echo ein- bzw. zweistellige Jahreszahlen 0-30 werden als 2000-2030 interprediert >> %_helpfile% | + | |
- | echo wird keine Jahreszahl angegeben wird das aktuelle Jahr verwendet >> %_helpfile% | + | |
- | echo wird kein Monat oder 0 angegeben wird das aktuelle Monat verwendet >> %_helpfile% | + | |
- | echo wird kein Tag oder 0 angegeben wird der aktuelle Tag verwendet >> %_helpfile% | + | |
- | echo wird nur 0 angegeben wird das aktuelle Datum verwendet >> %_helpfile% | + | |
- | echo z.Zt. findet keine Prüfung auf unplausible Tage statt >> %_helpfile% | + | |
- | echo. >> %_helpfile% | + | |
- | echo Beispiele/Examples: >> %_helpfile% | + | |
- | echo 1. des Monats: %_thisfile% 1. >> %_helpfile% | + | |
- | echo 1st of the Month: %_thisfile% 0/1 >> %_helpfile% | + | |
- | echo Heute/Today: %_thisfile% %%date%% >> %_helpfile% | + | |
- | echo or %_thisfile% 0 >> %_helpfile% | + | |
- | echo. >> %_helpfile% | + | |
- | echo Output in SET Variables: >> %_helpfile% | + | |
- | + | ||
- | echo _cw=12 >> %_helpfile% | + | |
- | echo _cww=12 >> %_helpfile% | + | |
- | echo _cwwy=12/2009 >> %_helpfile% | + | |
- | echo _cwy=12/2009 >> %_helpfile% | + | |
- | echo _d=17 >> %_helpfile% | + | |
- | echo _date=2009-03-17 >> %_helpfile% | + | |
- | echo _dayofyear=76 >> %_helpfile% | + | |
- | echo _dd=17 >> %_helpfile% | + | |
- | echo _language_output=de >> %_helpfile% | + | |
- | echo _leapyear=0 >> %_helpfile% | + | |
- | echo _longdate=Dienstag, 17.03.09 >> %_helpfile% | + | |
- | echo _m=3 >> %_helpfile% | + | |
- | echo _mm=03 >> %_helpfile% | + | |
- | echo _w=2 >> %_helpfile% | + | |
- | echo _ww=Di >> %_helpfile% | + | |
- | echo _www=Dienstag >> %_helpfile% | + | |
- | echo _yy=09 >> %_helpfile% | + | |
- | echo _yyyy=2009 >> %_helpfile% | + | |
- | + | ||
- | echo. >> %_helpfile% | + | |
- | echo this helpfile: %_helpfile% >> %_helpfile% | + | |
- | if not "%_helpfile%"=="^&2" if exist %_helpfile% more %_helpfile% | + | |
- | endlocal | + | |
- | goto end | + | |
- | + | ||
- | + | ||
- | :clear_vars | + | |
- | endlocal | + | |
- | set _cw= | + | |
- | set _cww= | + | |
- | set _cwy= | + | |
- | set _cwwy= | + | |
- | set _d= | + | |
- | set _date= | + | |
- | set _dayofyear= | + | |
- | set _dd= | + | |
- | set _language_output= | + | |
- | set _leapyear= | + | |
- | set _longdate= | + | |
- | set _m= | + | |
- | set _mm= | + | |
- | set _w= | + | |
- | set _ww= | + | |
- | set _www= | + | |
- | set _yy= | + | |
- | set _yyyy= | + | |
- | goto end | + | |
- | + | ||
- | :end | + | |
- | REM END OF FILE | + | |
- | REM EXIT 0 | + | |
- | rem pause | + | |
- | </file> | + | |
+ | Die Commandline oder auch Commandozeile unter Windows ist mächtiger als man denkt. | ||
+ | Hier ein paar Scripte die ich ab und zu nutze | ||
+ | * [[wochentag]] | ||
+ | * [[sleep]] | ||
+ | * [[ssh-tunnel]] | ||
+ | * [[check-runing-time]] | ||
+ | * [[send-a-mail]] | ||
+ | * [[cmdchat]] | ||
+ | * [[date_german]] | ||
+ | * [[timestamp]] | ||
+ | * [[replace_vars]] | ||
+ | * [[run_wireshark.cmd]] | ||
+ | * [[logout-reboot-shutdown]] | ||
+ | * [[backup-benutzer]] | ||
+ | * [[xnview-resize]] |