Onmisbare opdrachtregelcommando’s

In Windows ben je het natuurlijk gewend in een comfortabele grafische omgeving te werken. Daar is niets op tegen, maar af en toe biedt de kale opdrachtprompt een uitstekend alternatief en werkt die grondiger, beter of sneller dan de Windows-interface. We stellen in deze workshop enkele interessante commando’s en mogelijkheden aan je voor.

Het succes van Windows – en overigens ook van veel moderne Linux-distributies – is de gebruiksvriendelijke gui (graphical user interface), die zich vlot laat bedienen met vensters en menu’s. Toch heeft ook de opdrachtprompt (cli; command line interface), nog altijd bestaansrecht. Immers, sommige commando’s zitten erg diep verstopt in de vensterhiërarchie van Windows – voor zover ze al langs die weg beschikbaar zijn. Bovendien kan je heel wat commando’s in batchbestanden of scripts opnemen. Zo’n batchbestand of script laat zich dan probleemloos oproepen vanuit bijvoorbeeld de ingebouwde taakplanner of tijdens het aanmelden van Windows.

We gaan hier geen simpele opsomming van alle Windows commando’s geven. Dat zijn er niet alleen veel te veel, je kunt ze ook eenvoudig vinden op pagina’s als abt.cm/1b8k3Ba (Windows 7) en abt.cm/1aqY47w (Windows 8). Wij hebben een kleine selectie gemaakt van de commando’s die ons nuttig lijken en die bij veel gebruikers wellicht niet zo goed bekend zijn. Alle commando’s zouden zowel in Windows Vista, 7 als 8 moeten werken (en de meeste overigens ook in Windows XP).

Wie zich DOS nog herinnert, hoeven we het dir-commando – afkorting van directory – niet meer voor te stellen. Dat neemt niet weg dat er heel wat minder bekende schakelopties zijn die erg handig kunnen zijn. Neem bijvoorbeeld een opdracht als dir /O-S /P /S. Dat commando geeft een lijst van alle bestanden, de grootste eerst (/O-S), waarbij ook de inhoud van onderliggende mappen wordt getoond (/S) en waarbij na elk vol scherm gepauzeerd wordt (/P).

Sinds Vista is er een nieuwe schakeloptie bijgekomen: /R, waarmee je verborgen ads-stromen blootlegt (alternate data streams). Een voorbeeld: creëer een testdocument in Wordpad (bijvoorbeeld geheim.rtf). Voer vervolgens de opdracht type geheim.rtf > saai.txt:verborgen.rtf uit en verwijder geheim.rtf. Met deze opdracht heb je het document als ads verborgen in het bestand saai.txt. Om het document alsnog te kunnen lezen kan je het volgende commando uitvoeren: “C:\Program Files\Windows NT\Accessories\wordpad.exe” saai.txt:verborgen.rtf. Vergelijk ook even de uitvoer van dir met die van dir /R.


Het dir-commando kan ook alternatieve ntfs-gegevensstromen blootleggen.

Het xcopy-commando is minder bekend en veel flexibeler dan het aloude copy-commando. Het laat zich bijvoorbeeld handig gebruiken wanneer je een kopie wenst van alle nieuwe of gewijzigde bestanden naar een of meer backupmedia – dat kan zelfs volautomatisch wanneer je de nodige opdrachten in een batchbestand opneemt en aan je Taakplanner koppelt. Wanneer je in volgorde de commando’s xcopy d: e: /A/E/I/R/Y en xcopy d: f: /M/E/I/R/Y uitvoert, dan worden alle gewijzigde en nieuwe bestanden van d: naar e: en naar f: gekopieerd. Het verschil tussen beide parametersets (respectievelijk /A en /M) laat zich als volgt verklaren. De parameter /A zorgt ervoor dat alleen de bestanden worden gekopieerd waarvan het archiefkenmerk is ingesteld. Dit kenmerk is een van de attributen die je via het attrib-commando kunt opvragen. Windows stelt dit attribuut namelijk automatisch in voor alle nieuwe of gewijzigde bestanden. Bij de tweede backupronde – in ons voorbeeld dus naar station f: – gebruiken we echter parameter /M: die schakelt het attribuutarchief bij de gekopieerde bestanden weer uit. Dat zorgt er dan voor dat een volgende keer alleen die bestanden worden gebackupt die sinds de vorige backupronde zijn gecreëerd of aangepast. Wat precies de betekenis is van de parameters /E/I/R/Y, dat vertelt het commando xcopy /?.


Xcopy: geen volbloed backuptool, maar best handig voor kleinschaliger taken.

iCacls is de verbeterde versie van het cacls-commando zoals dat ook al in Windows XP aanwezig was. Als je weet dat het staat voor change access control lists (de exacte betekenis van de ‘i’ moeten we je schuldig blijven), dan heb je meteen door dat het een instrument is om acl’s oftewel ntfs-machtigingen te beheren. Een paar voorbeelden maken dat duidelijk:
• (i)cacls c:\testbestand.txt (geeft een lijst met de machtigingen van dit bestand per gebruiker).
• (i)cacls c:\testbestand.txt /E /G Redacteur:R (geeft bijkomend leesrechten – Read – aan gebruiker Redacteur; andere parameters zijn N(one), W(rite), C(hange) en F(ull). Let wel: als je de parameter /E weglaat, dan worden de bestaande machtigingen niet aangevuld, maar verwijderd en vervangen door de nieuwe machtigingen.

Soms kan het gebeuren dat bepaalde bestanden zich niet laten benaderen, zelfs niet als je bent aangemeld als administrator. Open dan de opdrachtprompt als administrator en forceer je met de volgende commando’s alsnog een weg naar zulke dwarsliggers:
takeown /F <pad naar bestand>
icacls <pad naar bestand > /grant <je_accountnaam>:F


Krachtig machtigingenbeheer van op de opdrachtprompt!

Mklink is niet zo bekend. Toch kan je daar fraaie resultaten mee boeken. Stel, je hebt (gedurende een bepaalde periode) frequent toegang tot een specifieke submap nodig. Liever dan telkens naar die diep geneste map te moeten navigeren, creëer je een koppeling die sneller te bereiken is. Dat kan als volgt. Ga als administrator naar de opdrachtprompt en voer het volgende commando uit: mklink /J c:\snelmap “<pad-naar-diep-geneste-map>”. Je zult merken: wanneer je data opslaat in de map c:\snelmap komen die automatisch (ook) terecht in de ‘originele’ map. Je kan naderhand de mapsplitsing – in ons voorbeeld is dat c:\snelmap – verwijderen, bijvoorbeeld met rd c:\snelmap. De bestanden in de gekoppelde map blijven dan behouden. Echter, wanneer je de inhoud van c:\snelmap verwijdert – bijvoorbeeld door met het del-commando alle bestanden te wissen – dan verdwijnen ook de data uit de originele map!

Verwant met dergelijke mapsplitsingen zijn de zogenoemde symbolische links. Dat zijn links die naar andere mappen verwijzen. Dat kan bijvoorbeeld handig zijn als je bij elkaar horende bestanden in verschillende mappen hebt ondergebracht. Door nu symbolische links in eenzelfde map te verzamelen, kan je die verschillende mappen vanuit een en dezelfde locatie bereiken. Dat gaat als volgt. Eerst creëer je de map waarin je die symbolische bestandskoppelingen wilt opnemen. Vervolgens voer je vanuit die map de opdracht mklink /D financieledata <pad_naar_eerste_map> uit. Het resultaat is een SYMLINKD-ingang met de naam financieledata die dus verwijst naar <pad_naar_eerste_map>. Je herhaalt deze opdracht nu voor andere mappen, zoals mklink /D klantenbestand <pad_naar_tweede_map>, enz.


Een ‘mapsplitsing’: handig om diep geneste mappen (tijdelijk) snel bereikbaar te maken.

Het ping-commando doet weinig meer dan willekeurige icmp-datapakketjes (internet control messaging protocol) tussen twee apparaten versturen, de zogenoemde echo requests en echo replies. Het volstaat het ip-adres of de hostnaam achter het ping-commando in te vullen – als het goed is, krijg je dan vier reacties van dat apparaat terug, evenals de tijd in milliseconden die de pakketjes over en weer nodig hadden. Zo’n commando is dus handig om snel uit te vissen of de host actief is en om de netwerkprestaties te checken – hou er wel rekening mee dat firewalls roet in het eten kunnen gooien en er bijvoorbeeld voor kunnen zorgen dat de beoogde host niet reageert op je ping-commando’s (zie ook bij ARP).

Je kunt ping overigens ook als een soort stresstest op je netwerkverbinding loslaten, met name door de pakketgrootte (standaard is zo’n pakketje slechts 32 bytes groot) te verhogen, bijvoorbeeld ping <ip-adres/host> -l 1024. Voeg je er nog de parameter –t aan toe, dan blijft je toestel ‘pingen’ tot wanneer je dat proces zelf stopzet met Ctrl+C.

Verwant met ping is het commando pathping. Eigenlijk is dat een combinatie van ping en tracert. Met dit laatste commando, dat overigens ook icmp-pakketjes uitstuurt naar een host, krijg je de gehele route uitgetekend, over de diverse ‘hops’ oftewel routers heen, van je eigen pc tot de doelhost. Pathping berekent bij elke hop ook het eventuele pakketverlies. Hou er rekening mee dat het hele proces minstens 5 minuten duurt.


Al hoppend naar het doel: geen bottlenecks?

Ping mag bekend zijn, arp is dat al veel minder. Arp staat voor address resolution protocol en maakt het mogelijk een verbinding te leggen met een andere host zonder vooraf het mac-adres van dat apparaat te kennen. Zo’n arp-verzoek – “wie herkent dit ip-adres?” – wordt namelijk ‘gebroadcast’. Anders gezegd: elke host in het lokale netwerk ontvangt dit pakketje. Als het goed is, zal de host met het doel-ip-adres daarop reageren door zelf een arp-reply te versturen (met zijn mac-adres) naar de vragende partij. Zo’n arp-commando kan dus nuttig zijn om op afstand het mac-adres te weten te komen, maar bijvoorbeeld ook om uit te vissen of een host al dan niet actief is, zelfs indien die niet zou reageren op een icmp echo-request van een ping-commando – bijvoorbeeld omdat een firewall zulke verzoeken blokkeert. Probeer het volgende experiment maar even uit.
1) blokkeer icmp echo-requests in de firewall van pc B (zie verder);
2) ping van pc A naar pc B – je krijgt nu alleen maar time-outs;
3) voer op pc A het commando arp –d * uit (om alle hosts uit de arp-tabel te verwijderen);
4) voer op pc A het commando arp –a uit (de arp-tabel blijkt nu inderdaad leeg);
5) voer op pc A nogmaals een ping naar pc B uit (alweer time-outs);
6) voer op pc A nogmaals arp –a uit: pc B blijkt aan de tabel toegevoegd en is dus actief!

Om specifiek alle echo requests te blokkeren ga je in de Windows Firewall met geavanceerde beveiliging als volgt te werk. Kies Regels voor binnenkomende verbindingen, klik op Nieuwe regel, stip Aangepast aan en klik op Volgende. Laat Alle programma’s aangestipt en klik nogmaals op Volgende. Bij Type protocol kies je ICMPv4, waarna je op de knop Aanpassen drukt. Hier stip je Specifieke ICMP-typen aan en plaats je een vinkje bij Echoaanvraag. Bevestig met OK, druk op Volgende (2x) en kies De verbinding blokkeren. Druk alweer op Volgende (2x), geef een naam in voor de regel en rond af met Voltooien.


Geen echo replies? Dan maar via een arp-omweg…

Als je net /? uitvoert, dan zie je meteen dat dit commando zich via tal van parameters laat aansturen. Dat hoeft niet zo te verbazen want met dit commando kan je de meest uiteenlopende netwerkbronnen beheren. Overigens kan je per netwerkbron specifieke feedback opvragen, zoals net help user of net help group. We beperken ons hier tot een aantal handige toepassingen van dit commando.

Gebruikers. Je wilt een Windows-account creëren en tegelijk vermijden dat die persoon zijn wachtwoord kan wijzigen? Daar zorgt het commando net user <accountnaam> <wachtwoord> /add /passwordch:no voor. Voer daarna nog even het commando net user (zonder meer) uit om een lijst van alle accounts te krijgen. Je kunt ook de aanmelding van die persoon tot bepaalde uren beperken: net user <accountnaam> /times:m-avr,5pm-9pm;za-zo,8am-8pm. Wel even opletten: vergeet de slash (/) niet voor times of Windows denkt dat je het wachtwoord van de gebruiker wil wijzigen! Een account weer verwijderen is simpel: net user <accountnaam> /delete. Of misschien wil je dat account alleen maar tijdelijk op non-actief zetten: daar zorgt net user <accountnaam> /active:no voor.

Shares. Een overzicht van de gedeelde bronnen op je apparaat krijg je met net share. Bijkomende shares creëren is niet veel lastiger: net share plaatjes=”c:\media\fotos” bijvoorbeeld, en met net share plaatjes /delete verwijder je de share weer. Handig is ook de mogelijkheid om een gedeelde netwerkschijf permanent te koppelen aan een stationsletter: net use z: \\”<computernaam>”\<sharenaam> <eventuele_wachtwoord> /persistent:yes. Voorzie bij voorkeur een stationsletter achteraan in het alfabet om te vermijden dat je een letter toekent die normaliter aan een verwijderbaar medium als een usb-stick wordt toegewezen.


Geen wachtwoord wijzigen en met beperkte aanmeldingstijden? Dat kan!

Deel dit artikel
Voeg toe aan favorieten