kein Dos, aber es schaut trotzdem so aus
ein paar kleine Batchdateien die einem manchmal Zeit sparen können.
| Wochentag.cmd | Ermitteln des Wochentages unter Windows XP |
| Letzter Sonntag.cmd | Gibt das Datum des letzten Sonntags aus |
| Laufwerksnamen.cmd | Zeigt den Namen des Laufwerks an z.B. Laufwerk C: - System oder Laufwerk D: - Daten |
Die Scripte funktionieren mit einem deutschen Windows XP. Andere Systeme oder Sprachen benötigen sehr wahrscheinlich Änderungen in den Scripten. Da hilft dann nur kreatives Probieren oder professionelles abändern. Wie auch immer, Viel Spaß dabei.
@echo off
setlocal
TITLE=Wochentag ermitteln
REM 1 = Montag ... 7 = Sonntag
for /F "Delims=. tokens=1,2,3,*" %%i IN ('echo %DATE%') do call :setzen %%i %%j %%k
call :WoTag
Call :Anzeigen
endlocal
pause
goto :EOF
:#######################################################################################
:setzen
set dd=%1 & set mm=%2 & set yy=%3
goto :EOF
:#######################################################################################
:#######################################################################################
:WoTag
REM Jedes 2-stellige Jahr über 38 ist 19xx
set /a "JahrZweitausend=2038%%1000"
if 1%yy% LSS 200 if 1%yy% LSS 1%JahrZweitausend% (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
goto :EOF
:#######################################################################################
:#######################################################################################
:Anzeigen
if "%dow%" equ "1" echo Heute ist Montag & goto :EOF
if "%dow%" equ "2" echo Heute ist Dienstag & goto :EOF
if "%dow%" equ "3" echo Heute ist Mittwoch & goto :EOF
if "%dow%" equ "4" echo Heute ist Donnerstag & goto :EOF
if "%dow%" equ "5" echo Heute ist Freitag & goto :EOF
if "%dow%" equ "6" echo Heute ist Samstag & goto :EOF
if "%dow%" equ "7" echo Heute ist Sonntag & goto :EOF
goto :EOF
:#######################################################################################
@echo off
for /F "Delims=. tokens=1,2,3,*" %%i IN ('echo %DATE%') do call :setzen %%i %%j %%k
if %dd% GTR %dow% ( set /A dd-=%dow% & goto fertig )
if %mm% GTR 1 ( call :Monatminus
) else ( set mm=12
set /A yy-=1
set /A dd=%dd% + 31 - %dow% )
:fertig
if %dd% LSS 10 set dd=0%dd%
if %mm% LSS 10 set mm=0%mm%
if #%1# equ ## ( echo Der letzte Sonntag war am %dd%.%mm%.%yy% & pause
) else ( set %1=%dd%.%mm%.%yy%)
goto :EOF
:#######################################################################################
:Monatminus
set /A mm-=1
for %%i in (1:31 2:28 3:31 4:30 5:31 6:30 7:31 8:31 9:30 10:31 11:30 12:31) do (
for /f "delims=: tokens=1,2" %%o in ("%%i") do (
if %%o EQU %mm% (
if %mm% EQU 2 (
set /A dd=%dd%+%%p+%sj%-%dow%
) else ( set /A dd=%dd%+%%p-%dow%))))
goto :EOF
:#######################################################################################
:#######################################################################################
:setzen
set dd=%1 & set mm=%2 & set yy=%3
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
set /a a=%yy%%%4 & set /a b=%yy%%%100 & set /a c=%yy%%%400 & set sj=0
if %a% EQU 0 (
if %b% NEQ 0 (
set sj=1
) else (
if %c% EQU 0 (
set sj=1
)))
set a=
set b=
set c=
goto :EOF
:#######################################################################################
Ein Script das zeigt wie man mittels der obigen CMD eine Umgebungsvariable anlegt mit der
dann weitergearbeit weren kann. Beide Scripte müssen für dieses Testscript im gleichen
Verzeichniss liegen.
@echo off
cls
echo Aktuell ist heute der %DATE%
set LS=### Script fehlt ###
if exist "%~dp0l_SO.cmd" call "%~dp0l_SO.cmd" LS
echo der letzter Sonntag war am %LS%
pause
@echo off
if "%1" equ "V" goto V
"%Systemroot%\System32\cmd.exe" /E:ON /F:ON /V:ON /C "call %0 V %*"
exit
:v
setlocal
set Ort=%~dp0
echo °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
cd /D %%i:\ 1>nul 2>>&1
if "!errorlevel!" equ "0" (
for /F "tokens=*" %%a in ('vol %%i: ^| find /I "%%i: ist"') do call :Bezeichnung "%%a" %%i
)
)
echo °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
cd /D %Ort%
echo.
endlocal
pause
goto :EOF
:Bezeichnung
set Temp=%~1
echo °°° %2: - %Temp:~31%
goto :EOF
