Intro to the Windows Command Line

Introduction

Side Note - I've searched online to find info on many things related to technology. A typical search will yield a lot of blogs and tutorials, and way down the list there is documentation from the company/team that created the product. All this is OK, but i've found if you really want to learn something, the best way is a good old-fashioned book (pdf or print). The ideas are whole and complete, and the quality is much higher than a typical blog post (..yea, I know, this is a blog, and no it is not as good as a book). And now for the big surprise. Most of my content is from books. I did not invent this stuff. And I think it is important to give credit where credit is due. For more information, check out an A+ certification book (I got mine from goodwill for 3 bucks, isnb-9780071745154).

Ok, on to the post. This tutorial only applies to the windows command line, not powershell. To start out, I am not a huge Windows fan. It is expensive, and I am often disappointed in the stability. But, most of us use it at work and home, so we should be using to the best of our ability. So this should help extend your skills at doing basic stuff. There are a few things that I will show you that I prefer to use a mouse and keyboard with, but there are a few things I would rather use the command line with (eg, moving files, mouse, finding the ip address of the computer, keyboard). Also, I am using Windows 7.

Lets get started. To get to a command prompt, we can hold shift and right-click and select open command window here. This is nice because we do not have to change the directory to the our directory we want to work from. You can also just type cmd in the start menu.

If you ever run a command and it is taking forever to finish, we can terminate the command with ctrl+c while in the command prompt.

if you need general help on any command, use

help

Now, lets get our keyboard hands "dirty".

File Information

The first command is dir. This shows the content of the directory (dir) you are in.

> dir

 Volume in drive C has no label.
 Volume Serial Number is 5033-5C23

 Directory of C:\Users\ngordon\Desktop\test

08/28/2015  07:44 AM    <DIR>          .
08/28/2015  07:44 AM    <DIR>          ..
08/28/2015  07:44 AM    <DIR>          another-test
08/28/2015  07:44 AM                 0 file1.txt
08/28/2015  07:44 AM             8,746 file2.xlsx
08/28/2015  07:44 AM                72 tmp.txt
               3 File(s)          8,818 bytes
               3 Dir(s)  38,038,937,600 bytes free

This is an easy way to see all the files and folders in our current directory. If you want to preserve this information, we can redirect the output to a file tmp.txt with

dir > tmp.txt

To get help on the command dir, use

dir /?

If you just want to see the filenames in 5 columns, we can use a switch with the syntax /W, which looks like this

> dir /W
 Volume in drive C has no label.
 Volume Serial Number is 5033-5C23

 Directory of C:\Users\ngordon\Desktop\test

[.]            [..]           [another-test] file1.txt      file2.xlsx      tmp            tmp.txt        
               4 File(s)          9,187 bytes
               3 Dir(s)  38,019,055,616 bytes free

Wildcards

If there are alot of files, using wildcards can reduce the clutter. Also note the :: are commets.

:: finds all files
dir *.*

:: finds all files with the extension xlsx
dir *.xlsx

:: finds all files that start with a
dir a*.*

:: finds an exact file
dir file1.txt

Tree

Another cool visual is with the tree command. Just using the tree command only shows the folders in the current directory, which shows up fine in the command window, but is not ascii text.

> tree
Folder PATH listing
Volume serial number is 5033-5C23
C:.
\---another-test

If you want to see ALL the files on your current disk, use the backslash. This may take a while to run on your system drive (C), so remember ctrl+c to cancel

tree \

I prefer being able to copy and paste those results into documents. Lets try and figure out how to change the command to give me ascii characters.

> tree /?
C: /?
Graphically displays the folder structure of a drive or path.

TREE [drive:][path] [/F] [/A]

   /F   Display the names of the files in each folder.
   /A   Use ASCII instead of extended characters.

Ah ha. We need to add switches to do that. If you want to see the folders and files in the current directory, try

> tree /F

Folder PATH listing
Volume serial number is 5033-5C23
C:.
│   file1.txt
│   file2.xlsx
│   tmp.txt
│
└───another-test
        file3.txt

Lastly, to create an ascii format list of all files and folders and dump it to a text file, try

tree /F /A > tree.txt

attrib

We can also use attrib to get file information in the current directory. The A stands for archive.

> attrib

A            C:\Users\ngordon\Desktop\test\file1.txt
A            C:\Users\ngordon\Desktop\test\file2.xlsx
A            C:\Users\ngordon\Desktop\test\tmp
A            C:\Users\ngordon\Desktop\test\tmp.txt

Navigating

If you want to navigate your system, the cd command is the ticket, to go towards the root of the drive, use cd

cd ..

:: or to go directly to the root

cd \

:: or for multiple traverses

cd ..\..

and to go into another folder use

cd test

:: or for multiple folders

cd Desktop\test\another-test

This can become tedious, so I'd recommend using tab when typing out names. It not only reduces the amount of typing you have to do but also reduced typos.

Lets say you want to search your usb drive. To switch to a different drive other than the default C:, just type

E:

Another modern and handy way to navigate is typing cd and dragging and dropping a folder into the command prompt and hitting enter. This can save some time on those deep folder structures.

Managing Folders and Files

OK, lets make some stuff. To create and destroy a new directory, use md and rd

:: create directory
md newfolder


:: destory an empty directory
rd newfolder

:: BE CAREFUL - recursively destroy directory, and all files and subfolders
rd newfolder /S

To copy a single file or groups of files, use copy

copy file1.txt file10.txt

:: or to copy to a different folder

copy file1.txt another-test\file1.txt

:: or copy all txt files to the subdirectory another-test

copy *.txt another-test

To copy an entire directory, we can use xcopy

:: copy directory another-test and skips empty subdirectories to another-test2
xcopy another-test another-test2

:: to include empty subdirectories, use switch
xcopy another-test another-test3 /E

We can rename files or folders with ren

ren file1.txt text1.txt

:: or more complicated names with spaces
ren text1.txt "text 1.txt"

::change directory name
ren another-test another-test5

To delete a file or files, use del

del tmp.txt

:: deletes all text files in the current directory
del *.txt

Creating New files

It appears that Microsoft deprecated edit, the command line editor. For those of you familiar with vim or nano, this are available on windows, so check them out. But for now, we can use the echo command, to create text files and append them

We can use echo to print text to the command window

echo hi there

Or we can redirect the text to a file

echo this is my first command line text file > file8.txt
echo this is the second line >> file8.txt
echo this is the third line >> file8.txt

for more complicated stuff, we can always open the file with the default text editor notepad.

notepad file8.txt

Automating commands with a batch file

A batch file (*.bat) is a simple windows script that can automate simple tasks.

echo echo hi there > hello.bat

Now we can run the batch file by simply typing the name and executing it

hello.bat

To pause to execution of a bat file, add pause to the end. This is nice if you have an error in the file and want to see what the error is, otherwise it will just close the window

:: waits for keyboard input from user
pause

Advanced command line

To see all the settings Windows loads by default, use

> set
ALLUSERSPROFILE=C:\ProgramData
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
HOME=C:\Users\ngordon
HOMEDRIVE=C:
HOMEPATH=\
Path=C:\Program Files\Common Files\Microsoft Shared\Windows Live

A common task is adding a program, exe or other, to the default list windows looks for when running. If we want to be able to run a program without executing the command from that directory, we have to add it to the path variable

Lets switch to the root of our c drive and create a folder called batch, and create a batch file that says hi there, and add it to the path so we can be greeted anywhere we are

:: go to the root of the c drive
cd \

:: make a new directory
md batch

:: go into the directory
cd batch

:: create a new batch file that says hi there
echo echo hi there > hello.bat

:: add this new folder to the system path
path=%PATH%;c:\batch

:: move out of the directory and check and make sure the system path works. This moves us to our home directory
cd %HOME%

Now lets test and make sure the system knows where to look for my custom batch scripts.

> hello
hi there

Excellent. We have covered the basics.

Networking Information

I have found myself using the command line alot when learning about networking. Here are some commands to help you get started with networking info.

:: robust command for networking options, such as seeing things on the network
net view

:: test the communication of another ip address
ping www.ifcuriousthenlearn.com

:: show network settings
ipconfig

:: tool to find networking information
nslookup www.ifcuriousthenlearn.com

:: traces the path a packet takes to get to the destination
tracert www.ifcuriousthenlearn.com

Summary

We have covered the basics to operate a windows command line. For a lot of work, it is faster than clicking a mouse around, but it takes some practice. There are also some great fundamental tools available found at the command line nearest you. Understanding what is going on in a computer is much easier when you can operate the command lines, as it is an integral part of any operating system. I hope you found this useful, and please comment with any suggestions.

Stay Curious!

Comments

Comments powered by Disqus