21. oktober 2001 - 01:10
#5
------------------------------------------------------------------------------------------------
CyberZeus\' Batch-Guide version 1.072, 16/9/00
------------------------------------------------------------------------------------------------
SES BEDST I EN OPLØSNING PÅ MINDST 600x800!
INDHOLD:
1.0: Hvad er BATCH-filer?
2.0: Hvordan laves BATCH-filer?
2.1: Kommandoer.
2.2: Andet
3.0: Brugerinput (parametre).
4.0: Tips.
5.0: Hvem har skrevet dette dokument?
1.0: Hvad er BATCH-filer?
Hvis du slår op under batch i en engelsk/dansk ordbog vil du opdage at det - blandt
andet - betyder serie og det beskriver det egentlig meget godt. Batch-filer er
nemlig en serie af kommandoer, en slags DOS-makroer, små programmer der automatiserer kedelige opgaver.
2.0: Hvordan laves BATCH-filer?
Batchfiler kan laves i næsten ethver tekstbehandlingsprogram (som Notesblok eller go\'e
gamle MS-DOS Editor - skriv edit og tryk enter i DOS-prompten), men tekstformateringer
kan ikke bruges. Kun almindelig ASCII tekst. Filerne skal blot gemmes med bat som
efternavn (som for eksempel \"Whatever.bat\"). Da BATCH-filer er lavet til DOS er det
smartest kun at give dem et navn på otte bogstaver for hvem gider skrive \"minbat~1.bat\"?
Forøvrigt behøver man ikke skrive kommandoer o.s.v. med stort, men det fortrækker jeg at
gøre. Denne guide beskriver Batch-filer i Windows 95 og nogle kommandoer virker ikke i
DOS eller Windows NT.
2.1: Kommandoer.
Til BATCH-filer kan bruges alle DOS-kommandoer:
De mest almindelige:
COPY = kopier
DEL = slet
DELTREE = slet bibliotek og underbiblioteker
MOVE = flyt
RENAME = omdøb
MD = opret bibliotek
CD.. = tilbage til forrige bibliotek
FORMAT = Formater diskette eller harddisk (en dum ide...!)
Og de mere ualmindelige:
ECHO = Angiver at noget tekst ikke er en kommando og styrer kommandoekkoet.
For eksempel: Ved at skrive ECHO Hej vises følgende på skærmen:
C:\\>ECHO Hej
Hej
Ved at skrive ECHO OFF øverst i ens BATCH-fil slås kommandoekkoet fra.
I eksemplet ville ECHO Hej i batchfilen resultere i følgende på skærmen:
Hej
Man kan altså ikke se kommandoen, kun resultatet.
ECHO. viser en blank linie. Se @.
EXIT = I DOS afslutter EXIT batch-filen og vender tilbage til prompten. I Windows 95
95 skal man skrive
CLS
EXIT
for at afslutte filen, lukke prompten og vende tilbage til Windows. Det er
fordi Windows 95 ikke vil afslutte batch-filer hvis der står noget på skærmen.
CALL = Bruges til at starte en batch-fil fra en anden. Hvis denne kommando ikke
bruges, startes den anden batch-fil uden at fortsætte den første fil bagefter.
Eksempel:
1.bat:
@ECHO OFF
ECHO Starter den anden batch-fil.
CALL 2.bat
ECHO Tilbage fra 2.bat.
2.bat:
ECHO OFF
ECHO Kører batch-fil nummer 2.
Når man starter filen \"1.bat\" vises følgende på skærmen:
Starter den anden batch-fil.
Kører batch-fil nummer 2.
Tilbage fra 2.bat
CHOICE = Giver brugeren et valg. Som standard er valget j/n. For at ændre det skal man
skrive CHOICE efterfulgt af /C: og valgmulighederne. Det første valg returnerer
\"errorlevel 1\", det andet \"errorlevel 2\" og så videre. Hvis man skriver /N
efter choice vises valgene (som standard følgende klamme: [J,N]?) ikke og /S
skelner mellem store og små bogstaver. /T c:nn vælger c efter nn sekunder.
Til sidst kan man skrive en besked.
Her er et eksempel der viser hvordan man kan lave en simpel menu:
@ECHO OFF
ECHO DOS-menu
ECHO --------------------
ECHO 1 MS-DOS Editor
ECHO 2 Windows
ECHO X Afslut
ECHO --------------------
CHOICE /c:12X /S /N /T:X,5 Hvilket program vil du starte?
IF ERRORLEVEL 3 GOTO EXIT
IF ERRORLEVEL 2 GOTO WIN
IF ERRORLEVEL 1 GOTO EDIT
:EDIT
EDIT
:WIN
WIN
:EXIT
Errorlevel skal skrives med den højeste værdi øverst.
CLS = Rydder skærmen
GOTO = Går til en andet sted i batch-filen som markeres med :navn.
Se IF.
IF = Udfører en batch-fil efter nogle betingelser. For eksempel finder følgende
ud af om Windows er i C:\\Windows eller C:\\WIN95 og kopierer \"WIN.EXE\"
til drev A:
@ECHO OFF
IF EXIST C:\\WINDOWS GOTO 1
IF EXIST C:\\Win95 GOTO 2
:1
COPY C:\\WINDOWS\\WIN.COM A:
GOTO END
:2
COPY C:\\WIN95\\WIN.COM A:
GOTO END
:END
IF NOT virker omvendt.
MORE = Viser output en skærm af gangen. For eksempel viser \"DIR | MORE\" indholdet af
et bibliotek ligesom /P.
PAUSE = Skriver \"Tryk på en vilkårlig tast for at fortsætte...\" på skærmen. Dette kan
især bruges hvis brugeren af ens BATCH-fil skal læse store mængder tekst. Se
også MORE.
PROMPT = Ændrer promptens udseende. Du kan eksempelvis skrive din helt egen tekst,
ændre den til Windows\' versionsnummer (hva\' så end man sku\' bruge det til),
klokken, datoen og så videre.
SET = sætter et eller andet til et eller andet. For eksempel:
@ECHO OFF
SET TEMP=C:\\TEMP
ECHO Temp-bibliotek er %temp%
Det ville vise:
Temp-bibliotek er C:\\TEMP.
Af det kan man også se hvad % kan bruges til.
START = Starter et DOS- eller Windowsprogram. Hvis du starter et Windowsprogram vender du automatisk tilbage til Windows når programmet er startet.
SUBST = Associerer et bibliotek med et drevbogstav.
TYPE = Viser indholdet af en tekstfil. For eksempel viser \"type readme.txt\"
indholdet af filen \"readme.txt\", men selvfølgelig kun hvis den ligger i sammen
bibliotek som batch-filen. Hvis ikke tilføjes sti:
\"type C:\\dokumenter\\readme.txt\" (og ja, uden aprostrof). Se MORE.
2.2: Andet
>> = Indsætter et stykke tekst eller et kommando-output i en fil. Eksempler:
ECHO Batch-Guide>>Batch.txt
DIR>>Log.txt
> = Det samme som >>, men > fjerner samtidig alt andet i filen.
> NUL = Fjerner resultatet (outputtet) fra kommandoen. Et eksempel:
COPY BATCH.TXT A:\\ > NUL
Og et andet der viser hvordan > NUL kan bruges til at ændre PAUSE-kommandoens standardtekst:
ECHO Teksten
PAUSE > NUL
@ = Angiver at kommandoen ikke skal vises. Hvis man for eksempel (hvor har jeg
skrevet det mange gange...) skriver
COPY Batch.txt C:\\Temp
i sin batch-fil vises hele kommandoen, parametre og resultatet. Hvis man
derimod skriver
@COPY Batch.txt C:\\Temp
vises kommandoen ikke, kun resultatet, det vil sige \"1 fil(er) er kopieret\".
Læs om > NUL for at se hvordan du fjerner \"Output\'et\".
Skriv kommandoen efterfulgt af /? i prompten for at se parametre og en beskrivelse af
hvad kommandoen gør.
For at starte et program kan du nøjes med at skrive dets sti og eventuelle parametre (For
eksempel \"C:\\Windows\\Win.exe\" for at starte Windows). Du kan godt placere kommandoer
efter starten af et program. De vil så blive udført når programmet afsluttes.
3.0: Brugerinput (parametre).
Brugerinput behandles i batchfiler som et % efterfulgt af et tal mellem 0 og 9. Brugeren
skal så skrive batchfilens navn efterfulgt af parametrene. 0 er iøvrigt batchfilen selv,
så det kan ikke bruges til input. For eksempel et installationsprogram hvor brugeren skal
skrive harddiskens bogstav:
@ECHO OFF
CLS
IF %1\"==\" GOTO DREV
MD %1\\Program
COPY *.* %1\\PROGRAM
%1
CD\\PROGRAM
PROGRAM
GOTO END
:DREV
CLS
ECHO Du har ikke skrevet din harddisks drevbogstav.
GOTO END
:END
4.0: Tips.
Ved at at skrive stien til dine batch-filer i SET PATH linien i din autoexec.bat kan de nåes
fra alle steder i prompten. Hver sti i SET PATH linien separeres af ; og du har muligvis ikke
linien i forvejen.
Hvis du har et problem er nyhedsgruppen alt.msdos.batch et godt sted at få råd.
Men det vigtigste er at prøve sig frem.
5.0: Hvem har skrevet dette dokument:
Denne lille fil er skrevet af CyberZeus (cyberzeus@get2net.dk) den 17/5/1998 og
opdateret siden. Jeg kan selvfølgelig ikke tage ansvaret for hvad denne fil skulle føre
til (for eksempel at du formaterer harddisken ved en fejl). Du er velkommen til at
sende mig en kommentar, rette mig hvis jeg har skrevet noget forkert, eller sende et tip.