# Gebruik van de opdrachtprompt/Commando's uitvoeren
## Beeld

Als je veel commando's na elkaar moet intypen, kan het handig zijn om het prompt-venster te maximaliseren, d.m.v. de knoppen rechtsboven of d.m.v. de sneltoets alt + enter.
Standaard is er een zwarte achtergrond, met witte tekens. Wil je dit liever omgekeerd, dan kan je color f0 als commando uitvoeren in cmd. Ook andere kleuren zijn mogelijk.

## Soorten

Er zijn twee soorten commando's:
* CLI-programma's, bv. ipconfig, ping, route,... Dit zijn programma's die je als exe-bestand kan terugvinden, bv. in de map C:\WINDOWS\system32.
* MS-DOS-commando's, bv. cd, rmdir, dir,.... Dit zijn commando's die een onderdeel zijn van de shell cmd.exe.

## MS-DOS-commando's

Enkele eenvoudige DOS-commando's kan je in onderstaande lijst terugvinden.
Voor diegene met ervaring in Linux-commando's: waar er een verschil tussen Linux en Windows is, er uitleg over de Linux-variant. Meer uitleg hierover is te vinden op The Linux Documentation Project, zowel in het Nederlands., als in het Engels Merk op dat Windows-commando's niet hoofdletter gevoelig zijn, waar dat bij Linux wel het geval is.
Bewerkingen met mappen of bestanden:
* A: of C: of D: of ...: de partitie A, C, D of ... actief maken.
* mkdir verwijst naar make dir en maakt dus een nieuwe map aan, binnen de actieve map.
* cd verwijst naar change directory en "bladert" naar een andere map en maakt deze actief.
* rmdir verwijst naar remove directory en kan een lege map verwijderen. Als die map dus submappen of bestanden bevat, dan zal deze eerst moeten worden leeggemaakt, voordat rmdir kan worden uitgevoerd. Of men kan rmdir /S gebruiken.
* dir verwijst naar directory en toont de inhoud van de actieve map. Merk op dat in Linux dir ook werkt, maar dat daar vaker ls zal gebruikt worden.
* del (Linux: rm) verwijst naar delete en verwijdert bestanden.
* copy (Linux: cp) kopieert bestanden en dit bestand per bestand.
* xcopy (Linux: cp) kopieert bestanden en submappen met hun inhoud. Het commando xcopy werkt sneller, aangezien het met een buffer werkt en niet bestand per bestand kopieert.
* rename of ren (Linux: mv) wijzigt de naam van een bestand.
* path geeft een lijst van mappen weer die behoren tot "het path". Programma's die behoren tot het path (bv. ipconfig.exe zit in C:\WINDOWS\system32, een map die standaard tot het path behoort) kunnen uitgevoerd worden wat de actieve map ook is. Bij programma's die niet behoren tot het path (bv. firefox.exe) moet je eerst navigeren naar die map (met cd) of moet je het volledige pad van dat programma zelf opgeven.
* type (Linux: cat) toon de inhoud van een tekstbestand op het scherm.
* cls (Linux: clear) wist het scherm en plaatst de opdrachtprompt terug bovenaan.
Andere commando's:
* date opvragen (en eventueel wijzigen) van de systeemdatum
* time (Linux: date) opvragen (en eventueel wijzigen) van de systeemtijd
* chkdsk (Linux: fsck) controleert de schijf op fouten en geeft daarna een statusrapport
* ver (Linux: lsb_release -a)toont de versie van Windows die gebruikt wordt.
Nog meer commando's, met bijhorende voorbeelden, zijn te vinden op de DOS Command Index (easydos.com) of op robvanderwoude.com.

## Schakelopties

Bij vele commando's kan of moet je extra schakelopties meegeven. Deze schakelopties worden soms ook parameters, argumenten of kortweg opties genoemd. Als je deze niet van buiten kent, kan je hulp opvragen door "/?" na het commando te typen, bv. tree /? zal geven:
Bij MS-DOS-commando's lukt niet alleen "cd /?", maar ook "help cd". De opdracht "help ipconfig" zou niet lukken, omdat ipconfig geen onderdeel is van de shell. Dan moet je ipconfig /? gebruiken, waaruit je bv. kan leren dat ipconfig /all gedetailleerde informatie weergeeft.

## help

Als je in de opdrachtprompt "help" intikt, wordt een lijst van DOS-commando's gegeven, met een woordje uitleg. Voor meer informatie over een commando kan je "help commando" intikken (bv. "help assoc") of "commando /?" (bv. assoc /?). In Linux zou dit het man-commando zijn (man is een afkorting van manual).
Merk op dat "help commando" enkel werkt voor commando's die onderdeel zijn van de shell (bv. cd, dir, tree,...) en niet voor andere cli-programma's (bv. ipconfig). Vandaar wordt aangeraden om altijd "commando /?" te gebruiken, daar dit altijd werkt.
Een ander voorbeeld:
Bij de uitleg staan zaken die optioneel zijn, altijd tussen vierkante haken. Zo leren we bij mkdir dat een pad MOET opgeven zijn, maar een station (bv. c:\) niet noodzakelijk is. We leren ook dat "md" een synoniem is voor "mkdir".
Bij cd zal dit staan:
Daar leren we uit de eerste regel dat volgende zaken mogelijk zijn:
Uit de tweede regel blijkt dat volgende zaken kunnen:
Wat niet kan is:

## Redirection
### I/O

Bij vele commando's komt de uitvoer standaard op het scherm terecht. Zo zal "dir" de inhoud van de actieve map op het scherm weergeven. In sommige situaties kan het handig zijn om dit te "redirecten" naar een bestand. Zo zal
de uitvoer van dir niet meer op het scherm tonen, maar bewaren in het tekstbestand dir.txt. Als dir.txt al inhoud had, dan zal dit overschreven worden met de nieuwe informatie van het commando dir. Wil je liever dat de huidige inhoud van dir.txt bewaard blijft en dat de nieuwe informatie achteraan het bestand wordt toegevoegd, dan moet je onderstaande uitvoeren:

### Pipeline

Het krachtige van cli is ook dat de uitvoer van het ene commando rechts kan "doorgestuurd" (gepiped) worden naar het volgende commando, zonder tussenliggende stap. Dit kan door de verticale streep | wat men de pipeline noemt.
Zo kan het zijn dat het commando "dir" uitvoer geeft, die langer dan een scherm is. Door "dir | more" wordt dit scherm per scherm getoond. Enkel wanneer de eindgebruiker op een toets drukt, wordt het volgende scherm getoond. Het commando "dir | more" heeft hiermee hetzelfde effect als "dir /p".
Meer dan één pipeline is ook mogelijk, bv:

## Liever lui, dan moe

Om je typwerk te besparen:
* Al ingetikte commando's kan je terug oproepen met het navigatiepijltje naar boven. Ben je te ver, dan kan je het pijltje naar beneden gebruiken.
* Als je bestanden of mappen nodig hebt (bv. bij cd), kan je gebruikmaken van Command-line completion: je tikt de eerste letters in van het bestand of de map, duwt vervolgens op de tab-toets en de rest vervolledigt zich. Als er meerdere mogelijkheden zijn, kan je meerdere keren op tab duwen. Deze "completion" werkt niet voor commando's (zoals in Linux wel het geval is).
* Als je bv. alle exe-bestanden van de ene map naar een andere map moet kopiëren, dan kan je dat één per één. Interessant is echter om gebruik te maken van het *-jokerteken. Bij het voorbeeld wordt dit dan xcopy *.exe doelmap.
* Als je merkt dat je dezelfde reeks commando's veel na elkaar moet intikken, dan kan een batchscript interessant zijn. Alle commando's worden dan in één keer in een tekstbestand gestopt (met "bat" als extensie) en vanaf dan wordt enkel het batchbestand uitgevoerd, die de reeks commando's één na één uitvoert.
* ↑ Van DOS/Windows naar Linux HOWTO
* ↑ From DOS/Windows to Linux HOWTO