Handige Opdrachtprompt-commando's voor Windows 10
Waar we vroeger de Opdrachtprompt er nog regelmatig bij pakten, zullen veel gebruikers het in Windows 10 ook prima zonder af kunnen. Toch zijn er nog altijd zeer handige Opdrachtprompt-commando's die je zeker een kans moet geven. We stellen er een aantal aan je voor.
Windows heeft zijn succes vooral te danken aan de gebruiksvriendelijkheid van de grafische interface (gui). Toch heeft ook de zogenoemde cli (command line interface) zeker een bestaansrecht. Sommige functies zijn namelijk lastig of helemaal niet terug te vinden in de grafische interface.
Opdrachtregelcommando’s kun je doorgaans ook nauwgezet aansturen met behulp van parameters. Bovendien laten zulke commando’s zich probleemloos opnemen in batchbestanden en kun je die automatisch laten uitvoeren vanuit het aanmeldingsscript van een gebruiker of via de taakplanner.
Er zijn meerdere manieren om in de opdrachtprompt te komen. Vanuit taakbeheer bijvoorbeeld, of via het contextmenu (rechtermuisknop op een bestand en Openen in opdrachtprompt) of door op Start / Uitvoeren te drukken (of toets Windows-toets+R) en in het venstertje dat verschijnt cmd in te voeren gevolgd door Enter.
In dit artikel geven we eerst enkele voorbeelden die duidelijk maken hoe krachtig (en nuttig) zulke commando’s kunnen zijn. Daarna tonen we je hoe je die kunt inzetten bij automatiseringsscenario’s.
Cmd-venster aanpassen
Wanneer je via het cmd-commando naar de opdrachtprompt gaat, beland je standaard in je eigen profielmap (c:\Users\<gebruikersnaam>). Nu kun je via het cd-commando (change directory) wel naar een andere map navigeren, maar je kunt het ook anders aanpakken. Open de Verkenner en navigeer naar de gewenste map. Klik een lege plek in het rechterpaneel aan terwijl je de Shift-toets ingedrukt houdt en kies Opdrachtvenster hier openen: je belandt nu meteen in de juiste map.
In Windows 10 is het eindelijk ook mogelijk een stukje tekst vanuit de gui naar het klembord te kopiëren (met Ctrl+C) en dat in een opdrachtregelvenster te plakken (met Ctrl+V).
En wie graag het uiterlijk van dit venster aanpast: klik de titelbalk met de rechtermuisknop aan, kies Eigenschappen en stel alle opties naar wens in op de tabbladen Opties, Lettertype, Indeling en Kleuren. Het is trouwens geen slecht idee om het opdrachtvenster van de administrator er anders te laten uitzien dan dat van de andere gebruikers.
©PXimport
Mapinhoud verkennen
Om de inhoud van een map te kennen raadpleeg je de Verkenner. Logisch, maar vanuit de opdrachtregel kom je specifieke informatie vaak sneller te weten. Om een idee te krijgen van de mogelijkheden voer je het commando dir /? Uit. De parameter /? kun je trouwens bij nagenoeg alle commando’s gebruiken om meer uitleg te krijgen.
Om een venster weer leeg te maken gebruik je het cls-commando (clear screen). Het komt er nu op aan de beschikbare parameters slim te combineren. Stel, je wilt een overzicht van alle bestanden, met de recentste bovenaan. Dan doe je dat met dir /O-D.
Merk ook bijvoorbeeld het verschil op tussen dir *, dir /A * en dir /B *. Dir /A toont je ook verborgen (systeem)bestanden en dir /B beperkt de uitvoer tot de bestandsnamen zonder verdere gegevens.
De mapinhoud afdrukken kan trouwens door achteraan je commando iets als >mapinhoud.txt toe te voegen, waarna je met Kladblok het txt-bestand kunt openen en afdrukken.
©PXimport
ADS-data toevoegen
Een leuk experiment is het toevoegen van ADS-data (alternate data streams) aan bestanden, althans in een ntfs-omgeving. Creëer met Kladblok een tekstbestand dat je wilt verbergen (dat noemen we even geheim.txt). Vervolgens voer je het commando type geheim.txt > saai.txt:onzichtbaar.txt uit. Dit commando zorgt ervoor dat het bestand geheim.txt als ADS-data (met de naam onzichtbaar.txt) wordt opgenomen in het bestand saai.txt. Je mag geheim.txt nu verwijderen.
Wanneer je dir saai.txt uitvoert, merk je dat dit bestand leeg is (0 bytes). Echter, voer je dir /R saai.txt uit, dan duiken alsnog de ADS-data van saai.txt op. Je krijgt de inhoud van die ADS te zien via het commando "c:\system\32\notepad.exe" saai.txt:onzichtbaar.txt. Op deze manier kun je dus bestanden verbergen in andere bestanden.
©PXimport
Machtigingenbeheer
Vanuit de gui kun je uiteraard ook machtigingen van gebruikers op mappen en bestanden regelen, maar dat kan sneller vanuit de cli. Bovendien heb je via de cli meer mogelijkheden in Windows 10 Home. Je regelt zowat alles via het icacls-commando: hierin lees je trouwens ‘acl’, wat staat voor ‘access control lists’ oftewel ntfs-machtigingen.
Om de huidige machtigingen op een map of bestand te weten te komen volstaat het commando icacls <naam_van_map_of_bestand>. Je kunt ook in één keer alle huidige machtigingen van alle bestanden in een bepaalde map en bijhorende submappen bewaren om die, na eventuele experimenten, snel weer terug te zetten. Machtigingen bewaren doe je als volgt:icacls <pad_naar_map>\* /save aclbestand /T.
Om de machtigingen die je in het bestand aclbestand hebt bewaard snel terug te zetten, voer je als administrator het commando icacls <pad_naar_map> /restore aclbestand uit. Om de machtigingen op een bestand door andere te vervangen, kun je een commando uitvoeren als icacls <bestandsnaam> /grant:r <gebruikersnaam>: F (F staat voor Full access).
Let wel, als je de parameter :r (replace) weglaat, dan worden de nieuwe machtigingen aan de al bestaande toegevoegd in plaats van die te vervangen.
©PXimport
Arp-commando's
Zelfs wanneer je nauwelijks met de opdrachtprompt bekend bent, heb je vast al eens het commando ipconfig of ipconfig /all uitgevoerd. En wellicht zal ook het ping-commando je niet onbekend zijn. Voer je bijvoorbeeld ping www.pcmweb.nl uit, dan hoor je van de webserver met het bijhorende ip-adres viermaal een antwoord te krijgen.
Veel minder bekend is het arp-commando (address resolution protocol). Dat laat je toe een verbinding te maken met een host zonder vooraf het mac-adres van dat apparaat te kennen. Zo’n arp-verzoek wordt namelijk gebroadcast, wat maakt dat elk apparaat in het lokale netwerk dit verzoek ontvangt. Als het goed is zal het apparaat met dat ip-adres reageren door een arp-reply naar de vragende partij te sturen.
Een arp-commando kan dus nuttig zijn om op afstand het mac-adres te weten te komen maar ook om te weten of het apparaat actief is, zelfs als dit niet reageert op ping-verzoeken. Doe gerust zelf de test (we gaan ervan uit dat je de firewall van apparaat B zo hebt ingesteld dat echoaanvragen van ping worden geblokkeerd). Voer nu de volgende commando’s als administrator uit:
arp -d * (maak de huidige arp-tabel leeg) arp -a (bewijs dat de arp-tabel geen ingang heeft voor apparaat B) ping
©PXimport
Werken met symlinks
Veel gebruikers zijn niet bekend met zogenoemde symbolische links (kortweg symlinks). Dat zijn een soort geavanceerde snelkoppelingen naar bestanden of mappen, waarbij het erop lijkt dat het effectief om dat bestand of die map gaat in plaats van om een snelkoppeling. Het zou bijvoorbeeld kunnen dat een of ander programma vereist dat data in <map x> terechtkomen, maar dat jij dat liever in <map y> ziet gebeuren.
Dat regel je als volgt. Ga als administrator naar de opdrachtprompt en over het volgende commando uit: mklink /J <pad_naar_map_y> <pad_naar_map_x> (plaats de paden tussen dubbele, rechte aanhalingstekens als er spaties in voorkomen). Je zult merken: alle data die in <map y> belanden, komen automatisch (ook) in <map x> terecht.
Verwant hiermee is het commando mklink /D, waarmee je in een bepaalde map een of meer links creëert die telkens naar een andere map verwijzen. Alle data uit die mappen, zijn dan in één keer bereikbaar door naar de map met die link(s) te navigeren.
Dat kan bijvoorbeeld handig zijn als je voor een project geregeld data moet benaderen die over diverse mappen verspreid zijn. Dat doe je als volgt vanuit een (lege) map: mklink /D financieel <pad_naar_eerste_map>, mklink /D logistiek <pad_naar_tweede_map> enzovoort.
©PXimport
Gedeelde mappen
Wil je snel een overzicht van alle gedeelde mappen op je systeem, dan volstaat het commando net share. Om meer informatie over de respectieve shares op te vragen, voer je de opdracht net share <sharenaam> als administrator uit. Je verneemt dan onder meer het maximum aantal gebruikers dat deze share tegelijkertijd mag benaderen, evenals de machtigingen op deze share.
Een nieuwe share creëren is uiteraard ook mogelijk. Dat doe je met een opdracht als net share fotos="c:\mediabestanden\mijn fotos". Wil je de share weer verwijderen dan zorgt net share fotos /delete daar wel voor. Een gedeelde netwerkschijf aan een vrije stationsletter koppelen kan ook, met net use x: \\<computernaam>\<sharenaam> <eventuele_wachtwoord> (de computernaam vind je bijvoorbeeld via Windows-toets+Pause).
Wil je deze koppeling permanent maken zodat die ook bij een volgende Windows-sessie actief blijft, voeg dan /persistent:yes toe achteraan het commando.
©PXimport
Back-ups & kopieën
Standaard-kopieeroperaties voer je wellicht via de Verkenner uit. Dat kan, maar je zoekt hier tevergeefs naar extra functies. Het opdrachtregelcommando robocopy biedt veel meer geavanceerde mogelijkheden, zoals het parameteroverzicht je meteen duidelijk maakt. We beperken ons hier tot een paar eenvoudige voorbeelden.
Met het commando robocopy "c:\mijn documenten" f:\ /MIR zorg je ervoor dat de bronmap (c:\mijn documenten) automatisch naar de doelmap wordt gespiegeld (MIRrored). Let wel, tenzij je het commando door de parameter /XX laat volgen, worden reeds bestaande data in de doelmap verwijderd tijdens deze back-upoperatie. Ook nuttig om weten: de parameter /SEC zorgt ervoor dat de originele machtigingen behouden worden in de doelmap. En met /LOG:<tekstbestand> houd je een logboek van de operatie bij.
Robocopy-opdrachten kunnen door de talrijke parameters behoorlijk complex worden. Gelukkig is er een optie om die opdrachten te bewaren; het volstaat achteraan /SAVE:<jobnaam> toe te voegen. Om diezelfde opdracht naderhand weer uit te voeren tik je dan robocopy /JOB:<jobnaam> in.
©PXimport
In batch
Een groot voordeel van opdrachtregelcommando’s is dat je die eenvoudig in een batchbestand kunt opnemen, zodat die commando’s in regel chronologisch na elkaar worden uitgevoerd zodra je het batchbestand aanroept (bijvoorbeeld vanuit de Windows taakplanner). Zo’n bestand maak je gewoon aan met Kladblok en geef je de extensie .cmd mee.
Je zou bijvoorbeeld een batchbestand op je bureaublad kunnen plaatsen dat de volgende opdrachtregel bevat: net use x: \\<computernaam>\<sharenaam> /persistent:no [/user:<inlognaam> <wachtwoord>]. Dat maakt dat de netwerkverbinding pas actief wordt zodra je dit batchbestand met een muisklik uitvoert, zodat Windows bij het opstarten geen tijd verliest door te zoeken naar bijvoorbeeld een verbinding met een niet langer aangekoppelde externe schijf.
In zijn eenvoudigste vorm is een batchbestand dus niets anders dan een chronologische opeenvolging van individuele opdrachtregelcommando’s. Iets als volgt bijvoorbeeld, waarbij de bronmap na de kopieeroperatie wordt leeggemaakt:
cls xcopy c:\mijndata d:\backups /M/E/H/R/I/Y del c:\mijndata\.* /Q*
Maar er zijn ook wel complexere constructies mogelijk, zoals in het volgende voorbeeld, waarin je alle bestanden met specifieke extensies van je schijf verwijdert:
@echo off rem Dit batchbestand wist specifieke bestanden title Selectieve bestandsverwijdering echo Bezig met wissen … for %%t in (tmp bak log) do del c:\.%%t /s* echo Bestanden gewist! pause
©PXimport
Aanmeldingsscript
Het is ook mogelijk een batchbestand (of een ander script) automatisch te laten uitvoeren zodra een specifieke gebruiker zich bij Windows aanmeldt. Dat kan in Windows Professional of hoger door Windows-toets+R in te drukken en vervolgens de opdracht lusrmgr.msc uit te voeren, waarna je de gewenste gebruiker aanklikt en het tabblad Profiel opent. Hier vul je dan de naam van het batchbestand in.
Je kunt het echter ook regelen vanuit de opdrachtregel, zelfs in de Home-versies van Windows. Dat gaat via het commando net user <gebruikersnaam> /scriptpath:<naam_van_batchbestand>. Voorwaarde is wel dat je dit batchbestand plaatst in een gedeelde map met de sharenaam ‘netlogon’, waarbij je er ook voor zorgt dat die gebruiker minimaal leesrechten op die map krijgt toegekend.
©PXimport
Taakplanner
Een batchbestand als aanmeldingsscript instellen is één manier om het automatisch te laten uitvoeren tijdens de login, maar het kan ook anders: met behulp van de ingebouwde Taakplanner. Die is trouwens veel flexibeler, want je kunt een batchbestand (of een ander script of programma) bijvoorbeeld ook laten uitvoeren tijdens het opstarten, op een specifiek tijdstip, bij het vergrendelen van het systeem enzovoort.
Wij willen bijvoorbeeld elke vrijdagnamiddag een batchbestand laten uitvoeren dat met specifieke opties een schijfopruiming start. In dit batchbestand nemen we dan (onder meer) het commando cleanmgr /sagerun:1 op (althans nadat we cleanmgr /sageset:1 vooraf één keer vanop de opdrachtregel hadden uitgevoerd en daar de gewenste opties hadden ingesteld).
©PXimport
Tot slot. Klik het vergrootglaspictogram aan in de Windows taakbalk en zoek naar taak. Start Taakplanner op en klik in het rechterpaneel op Taak maken (Basistaak maken kan ook, maar geeft je minder opties). Geef je taak een geschikte naam mee en zet desgewenst een vinkje bij Uitvoeren ongeacht of gebruiker wel of niet is aangemeld. Open het tabblad Triggers, druk op de knop Nieuw en kies (bijvoorbeeld) Gepland bij Start deze taak, waarna je het gewenste tijdstip en frequentie instelt (bijvoorbeeld Elke 1 vrijdag, om 16:00).
Bevestig met OK en open het tabblad Acties. Klik hier op Nieuw en verwijs via Bladeren naar je batchbestand. Bevestig met OK (2x) en vul desgevraagd je wachtwoord in. Als het goed is vind je nu de taak terug in het linkerpaneel, bij Task Scheduler-bibliotheek. Daar hoef je alvast niet meer aan te denken!