ændring: tilføjede to ekstra eksempler en der går i dybden om shutdown og en mere "for-sjov" om CD og DIR samt :-)
For alle jer der for længst har glemt hvordan batch filerne kan gøre dagligdagen meget lettere vil jeg tillade mig at give jer en lille opfriskning :-)
mest brugte kommandoer:
echo udskriver en linje
pause holder en "pause" i scriptet
set sætter en variabel
if den vidunderlige "if" kommando
gode til hjemmebrug
start starter en program
CD skifter sti
DIR hvis indhold af mappe
shutdown lukker computeren
net indstillinger osv. om brugere på computeren
okay.. nu til at bruge kommandoerne :-)
::fjerner promptlinjen
@echo off
::dette kaldes en "label", den kan bruges hvis man skal hoppe rundt i scriptet
:loop
::clear screen
cls
::tid til at give status for tid og dato... %TIME% og %DATE% er indbyggede variabler, så de laver arbejdet selv med at finde tiden
echo The current time is: %TIME%
echo The Current date is: %DATE
:: nu pinger vin localhost 1 gang... hvilket giver os et mindre delay, og output skal IKKE vises ( > NUL)
ping localhost -n 1 > NUL
::og så beder vi scriptet om at gå til label "loop"... dette gør at vi får en forholdsvis præcis tid :-)
goto loop
Okay, det var et ur der hele tiden opdatere tiden og datoen
men hvad hvis man bare skal have et script til at åbne programmer?
::her behøves echo off ikke da det "prompten" ikke behøver at se køn ud :-)
::Her angiver vi bare stien til programmerne der kal åbnes... intet andet er nødvendigt :-) (normalt bruger man dog "start" til at åbne ting, men den er ikke så god til at håndtere flere ting af gangen)
iexplorer.exe
"C:\Program Files\Mozilla Firefox\firefox.exe"
tjaa.. det var meget simpelt.. iexplorer er en "systemfil" så den behøver ikke nogen sti, mens i mozilla firefox er der mellemrum i stinavnet... dette betyder at vi er nød til at bruge gåseøjne :-)
::echo fra
@echo off
::lad os give vinduet en titel
title Fibonacci udregner (med delay)
::nu sætter vi variablerne... her kræver den at man bruger en bestemt parameter da det har med tal at gøre :-)
set /a tal1=0
set /a tal2=1
set /a tal3=0
::det var lidt matematik ;-)
::så til en label så vi kan loope udregningen :-)
:loop
::okay, nu kan jeg vise jer hvordan man bruger matematik delen
if /i %tal2% GEQ 10000000000 (goto STOP)
:: ovenstående sørger for at tallet ikke når for store højder
:: GEQ betyder "Grater or Equal" LEQ betyder "Lesser or equal" EQU betyder "equal" og NEQ betyder "Not equal"
set /a tal3=%tal1% + %tal2%
::godt... nu vil vi gerne udskrive resultatet
echo tal3
::så skal tallene forberedes til næste loop
set /a tal2=%tal3%
set /a tal1=%tal2%
::det var det... så lidt delay (svarende til 2 sekunder)
ping localhost -n 2 > NUL
goto loop
puhaaa... det var matematik :-)
vi mangler noget med tekst :-)
Lad os lave en menu
@echo off
title menu-test
set input=0
:menu
cls
echo =====================
echo Menu
echo =====================
echo.
echo.
echo 1) valgmulighed 1
echo 2) valgmulighed 2
echo 3) valgmulighed 3
echo 4) valgmulighed 4
echo.
set /p input= indtast
if %input%==1 (goto label1)
if %input%==2 (goto label2)
if %input%==3 (goto label3)
if %input%==4 (goto label4)
goto ERROR
:ERROR
::kommandoerne
:label1
::Kommandoerne
:label2
::kommandoerne
:label3
::Kommandoerne
:label4
::kommandoerne
Her brugte jeg "set /p [variabel]=[tekst]" hvilket gør at man skriver variablens værdi bagpå linjen med teksten man har defineret :-)
Lad os kigge lidt på shutdown kommandoen:
@echo off
::titlen på vinduet skal være shutdown :-)
title shutdown
::farven defineres i HEX, først baggrund så forgrund
color 2E
::2=grøn og E=lysegul
::så sætter vi variablerne
set input=0
set timer=0
set comment=0
:: så laver vi en simpel menu :-)
:menu
echo 1) alm. lukning
echo 2) lukning med timer
echo 3) lukning med timer+kommentar
echo 4) genstart
echo 5) genstart med timer
echo 6) genstart med timer+kommentar
echo 7) log af
echo 8) anuler lukning
echo.
set /p input= ^>
:: denne kommando laver en variabel ( a ) der skifter indhold hver gang kommandoen efter "do" er kørt... indholdet skrives i mellem paranteserne med mellemrum som adskillelse...
FOR %a in (1 2 3 4 5 6 7 8) do if %input%==%a% goto %a%
:: Først kigger den om input er lig 1, hvis den er går den til 1, hvis ikke går den videre til og tjekker om input er 2 osv.
::FOR kommandoen får i dette tilfælde 8 linjer kortet ned til 1 :-)
::en lille error meddelelse hvis input var forkert ^^
echo forkert tastning
ping localhost -n 3 > NUL
cls
goto menu
:1
::/s for "shutdown" og /f for at lukke alle vinduer ned uden at spørge
shutdown /s /f
:2
set /p timer=indtil timer (maks 600 sekunder) ^>
::t for "timer"
shutdown /s /t %timer% /f
:3
set /p timer=instil timer (maks 600 sekunder ^>
set /p comment=skriv en kommentar ^>
:: /c for "comment"
shutdown /s /t %timer% /c %comment% /f
:4
:: /r for "restart"
shutdown /r /f
:5
set /p timer=indtil timer (maks 600 sekunder) ^>
::t for "timer"
shutdown /r /t %timer% /f
:6
set /p timer=instil timer (maks 600 sekunder ^>
set /p comment=skriv en kommentar ^>
:: /c for "comment"
shutdown /r /t %timer% /c %comment% /f
:7
:: her kan muligvis også bruges timer og kommentar :-)
shutdown /l
:8
::/a for "anuler"
Der havde vi lidt om shutdown kommandoen ;-)
Her bruger vi lidt mere "advancerede" koder til CD og DIR:
@echo off
title filer og mapper
color 2E
::variabler
set input=0
:prompt
:: lad os lave vores egne kommandoer ;-) ikke så svært
set /p input=%CD%
FOR %a in (CD FILE) do (
type %input%|find "%a"
if %ERRORLEVEL%=0 goto %a%
)
:: ovenstående tjekker om vi skrev CD eller FILE, foran :-)
:: hvis den finder CD er ERRORLEVEL uforandret (altså 0), hvis den ikke finder CD er ERRORLEVEL lig 1 hvilket gør at den forsøger igen med FILE...
:ERROR
echo forkert kommando
goto prompt
:CD
set /p input= CD ^>
::vi tjekker om %input% stien eksisterer, hvis den ikke gøre laver vi den :-)
if not exist %input% (md %input%)
:: vi går til %input% mappen
cd %input%
:: og tilbage til "prompt"
goto prompt
:FILE
set /p input= FILE ^>
::her vil vi tjekke om filen eksisterer, hvis den gør åbner vi den ellers, laver vi en tom fil med det indtastede navn :-) (husk extension)
if not exist %file% (
echo. >> %input%
echo file oprettet
) else (
start %file%
)
:: tilbage til "prompt"
goto prompt
hvis du mangler mere information om en kommando må du meget gerne skrive, så tilføjer jeg det hvis jeg finder det nyttigt :-) men ellers kan man jo altid skrive "[kommando] /?"
LISTE OVER BRUGBARE/INDBYGGEDE VARIABLER
Program filer: %ProgramFiles%
Program data: %ProgramData%
Lokalt klokkeslet: %TIME%
Lokal dato: %DATE%
Nuværende placering: %CD%
Tilfældigt tal mellem 1 og omkring 64.000 : %RANDOM%
Brugerens mappe: %UserProfile%, %HomePath%
Delebrugerens mappe: %PUBLIC%
Computerens navn: %COMPUTERNAME%
UNC-sti: %LOGONSERVER%
Brugernavn: %USERNAME%
Tak for jeres tid ^^
P.S.
Notesblok.exe > skriv dit script > tryk på fanen "filer" > vælg "gem som" > gem som "*.bat" (eksempel: test.bat)
åbnes så ved at dobbeltklikke på ikonet som med alle andre filer/program etc.
for at redigere: højre-klik på ikonet > vælg "redigér" :-)
er egentligt bare en masse kommandoer der bliver skrevet til kommandoprompten ;-)


