Joar, ich bastel auch manchmal noch mit *.CMD rum. (ist nur der neue Name für die *.BAT)
Da gibt es aber noch ein/zwei Befehlssätze, die man auch öfters mal gebrauchen kann.
Code:
CALL :ReadIni Project1.ini DisplayName ServiceName
CALL :Trim ServiceName %ServiceName%
ECHO %ServiceName%
EXIT
:Trim
@REM @CALL :Trim VarName %VarName%
@SET %1=%2
@GOTO :EOF
:ReadIni
@REM @CALL :ReadIni FileName.ini ValueName VarName
@REM @ECHO ValueName = "%VarName%"
@FOR /f "tokens=2 delims==" %%a IN ('FIND "%~2=" %~1') DO @SET %~3=%%a
@GOTO :EOF
SLEEP kann man ganz gut über PING simulieren.
Den ErrorLevel prüft man (ich zumindestens) auch regelmäßig.
Code:
COPY a.txt b.txt
@IF ERRORLEVEL 1 ( ECHO. && ECHO FEHLER %ERRORLEVEL%: weiter mit beliebiger Taste && PAUSE > NUL )
Und sowas, wie das AdminManifest+
UAC gibt es auch. (auf diesen Code bin ich fast schon genauso stolz, wie auf mein IF-ERRORLEVEL)
Code:
@REM Administratortest (Hoch=S-1-16-12288 oder Mittel=S-1-16-8192)
@IF /i "%1" == "-admin" GOTO Admin
@WHOAMI /groups | FIND "S-1-16-12288" > NUL
@IF NOT ERRORLEVEL 1 GOTO Admin
@SET /P AdminName=Name des Admin-Kontos eingeben (nichts = "Administrator"):
@CALL :Trim AdminName %AdminName%
@IF NOT DEFINED AdminName SET AdminName=Administrator
RUNAS /user:%COMPUTERNAME%\%AdminName% "\"%~dpf0\" -admin"
@IF ERRORLEVEL 1 ( ECHO. && ECHO FEHLER %ERRORLEVEL%: weiter mit beliebiger Taste && PAUSE > NUL )
EXIT
:Admin
...hier nun der eigentliche Code...
Aber Achtung, vieles funktioniert ohne aktive Befehlserweiterung noch nicht.