Windows Command Line

Overview

Being effective at the command line can be very beneficial for Go developers. This module will show many of the common commands used to navigate and manipulate files and your environment from the command line.

Introduction

This module covers the basic in navigating and using the Microsoft Windows command line.

  • Find files
  • Create/Move/Delete files
  • Editing Files
  • Working with directories

Keep in mind that there are over 100 different commands that are available. We will only be covering the basic ones in this module.

Get Into The Windows Command Line

To get into a command prompt:

  1. Click the start button.
  2. In the Search or Run line, type cmd and press enter.

Understanding The Prompt

Typically, windows starts you in your user directory:

C:\Users\JaneSmith

The first part of the prompt (C:) tells us that we are on the C: drive.

Tips

  • MS-DOS and the Windows command line are not case sensitive.
  • To use a file name with a space in it, surround it with quotes. My Documents would become "My Documents"
  • When you delete a file or directory from the command line, it is NOT moved to the Recycle Bin and is gone forever.

Getting Help

You can type help at any time at the command prompt to get a list of commands to run:

> help
For more information on a specific command, type HELP command-name
ASSOC          Displays or modifies file extension associations.
ATTRIB         Displays or changes file attributes.
BREAK          Sets or clears extended CTRL+C checking.
BCDEDIT        Sets properties in boot database to control boot loading.
CACLS          Displays or modifies access control lists (ACLs) of files.
CALL           Calls one batch program from another.
CD             Displays the name of or changes the current directory.
CHCP           Displays or sets the active code page number.
CHDIR          Displays the name of or changes the current directory.
CHKDSK         Checks a disk and displays a status report.
CHKNTFS        Displays or modifies the checking of disk at boot time.
CLS            Clears the screen.
CMD            Starts a new instance of the Windows command interpreter.
COLOR          Sets the default console foreground and background colors.
COMP           Compares the contents of two files or sets of files.
COMPACT        Displays or alters the compression of files on NTFS partitions.
CONVERT        Converts FAT volumes to NTFS.  You cannot convert the
               current drive.
COPY           Copies one or more files to another location.
DATE           Displays or sets the date.
DEL            Deletes one or more files.
DIR            Displays a list of files and subdirectories in a directory.
DISKPART       Displays or configures Disk Partition properties.
DOSKEY         Edits command lines, recalls Windows commands, and
               creates macros.
DRIVERQUERY    Displays current device driver status and properties.
ECHO           Displays messages, or turns command echoing on or off.
ENDLOCAL       Ends localization of environment changes in a batch file.
ERASE          Deletes one or more files.
EXIT           Quits the CMD.EXE program (command interpreter).
FC             Compares two files or sets of files, and displays the
               differences between them.
FIND           Searches for a text string in a file or files.
FINDSTR        Searches for strings in files.
FOR            Runs a specified command for each file in a set of files.
FORMAT         Formats a disk for use with Windows.
FSUTIL         Displays or configures the file system properties.
FTYPE          Displays or modifies file types used in file extension
               associations.
GOTO           Directs the Windows command interpreter to a labeled line in
               a batch program.
GPRESULT       Displays Group Policy information for machine or user.
GRAFTABL       Enables Windows to display an extended character set in
               graphics mode.
HELP           Provides Help information for Windows commands.
ICACLS         Display, modify, backup, or restore ACLs for files and
               directories.
IF             Performs conditional processing in batch programs.
LABEL          Creates, changes, or deletes the volume label of a disk.
MD             Creates a directory.
MKDIR          Creates a directory.
MKLINK         Creates Symbolic Links and Hard Links
MODE           Configures a system device.
MORE           Displays output one screen at a time.
MOVE           Moves one or more files from one directory to another
               directory.
OPENFILES      Displays files opened by remote users for a file share.
PATH           Displays or sets a search path for executable files.
PAUSE          Suspends processing of a batch file and displays a message.
POPD           Restores the previous value of the current directory saved by
               PUSHD.
PRINT          Prints a text file.
PROMPT         Changes the Windows command prompt.
PUSHD          Saves the current directory then changes it.
RD             Removes a directory.
RECOVER        Recovers readable information from a bad or defective disk.
REM            Records comments (remarks) in batch files or CONFIG.SYS.
REN            Renames a file or files.
RENAME         Renames a file or files.
REPLACE        Replaces files.
RMDIR          Removes a directory.
ROBOCOPY       Advanced utility to copy files and directory trees
SET            Displays, sets, or removes Windows environment variables.
SETLOCAL       Begins localization of environment changes in a batch file.
SC             Displays or configures services (background processes).
SCHTASKS       Schedules commands and programs to run on a computer.
SHIFT          Shifts the position of replaceable parameters in batch files.
SHUTDOWN       Allows proper local or remote shutdown of machine.
SORT           Sorts input.
START          Starts a separate window to run a specified program or command.
SUBST          Associates a path with a drive letter.
SYSTEMINFO     Displays machine specific properties and configuration.
TASKLIST       Displays all currently running tasks including services.
TASKKILL       Kill or stop a running process or application.
TIME           Displays or sets the system time.
TITLE          Sets the window title for a CMD.EXE session.
TREE           Graphically displays the directory structure of a drive or
               path.
TYPE           Displays the contents of a text file.
VER            Displays the Windows version.
VERIFY         Tells Windows whether to verify that your files are written
               correctly to a disk.
VOL            Displays a disk volume label and serial number.
XCOPY          Copies files and directory trees.
WMIC           Displays WMI information inside interactive command shell.

For more information on tools see the command-line reference in the online help.
For more information on a specific command, type HELP command-name
ASSOC          Displays or modifies file extension associations.
ATTRIB         Displays or changes file attributes.
BREAK          Sets or clears extended CTRL+C checking.
BCDEDIT        Sets properties in boot database to control boot loading.
CACLS          Displays or modifies access control lists (ACLs) of files.
CALL           Calls one batch program from another.
CD             Displays the name of or changes the current directory.
CHCP           Displays or sets the active code page number.
CHDIR          Displays the name of or changes the current directory.
CHKDSK         Checks a disk and displays a status report.
CHKNTFS        Displays or modifies the checking of disk at boot time.
CLS            Clears the screen.
CMD            Starts a new instance of the Windows command interpreter.
COLOR          Sets the default console foreground and background colors.
COMP           Compares the contents of two files or sets of files.
COMPACT        Displays or alters the compression of files on NTFS partitions.
CONVERT        Converts FAT volumes to NTFS.  You cannot convert the
               current drive.
COPY           Copies one or more files to another location.
DATE           Displays or sets the date.
DEL            Deletes one or more files.
DIR            Displays a list of files and subdirectories in a directory.
DISKPART       Displays or configures Disk Partition properties.
DOSKEY         Edits command lines, recalls Windows commands, and
               creates macros.
DRIVERQUERY    Displays current device driver status and properties.
ECHO           Displays messages, or turns command echoing on or off.
ENDLOCAL       Ends localization of environment changes in a batch file.
ERASE          Deletes one or more files.
EXIT           Quits the CMD.EXE program (command interpreter).
FC             Compares two files or sets of files, and displays the
               differences between them.
FIND           Searches for a text string in a file or files.
FINDSTR        Searches for strings in files.
FOR            Runs a specified command for each file in a set of files.
FORMAT         Formats a disk for use with Windows.
FSUTIL         Displays or configures the file system properties.
FTYPE          Displays or modifies file types used in file extension
               associations.
GOTO           Directs the Windows command interpreter to a labeled line in
               a batch program.
GPRESULT       Displays Group Policy information for machine or user.
GRAFTABL       Enables Windows to display an extended character set in
               graphics mode.
HELP           Provides Help information for Windows commands.
ICACLS         Display, modify, backup, or restore ACLs for files and
               directories.
IF             Performs conditional processing in batch programs.
LABEL          Creates, changes, or deletes the volume label of a disk.
MD             Creates a directory.
MKDIR          Creates a directory.
MKLINK         Creates Symbolic Links and Hard Links
MODE           Configures a system device.
MORE           Displays output one screen at a time.
MOVE           Moves one or more files from one directory to another
               directory.
OPENFILES      Displays files opened by remote users for a file share.
PATH           Displays or sets a search path for executable files.
PAUSE          Suspends processing of a batch file and displays a message.
POPD           Restores the previous value of the current directory saved by
               PUSHD.
PRINT          Prints a text file.
PROMPT         Changes the Windows command prompt.
PUSHD          Saves the current directory then changes it.
RD             Removes a directory.
RECOVER        Recovers readable information from a bad or defective disk.
REM            Records comments (remarks) in batch files or CONFIG.SYS.
REN            Renames a file or files.
RENAME         Renames a file or files.
REPLACE        Replaces files.
RMDIR          Removes a directory.
ROBOCOPY       Advanced utility to copy files and directory trees
SET            Displays, sets, or removes Windows environment variables.
SETLOCAL       Begins localization of environment changes in a batch file.
SC             Displays or configures services (background processes).
SCHTASKS       Schedules commands and programs to run on a computer.
SHIFT          Shifts the position of replaceable parameters in batch files.
SHUTDOWN       Allows proper local or remote shutdown of machine.
SORT           Sorts input.
START          Starts a separate window to run a specified program or command.
SUBST          Associates a path with a drive letter.
SYSTEMINFO     Displays machine specific properties and configuration.
TASKLIST       Displays all currently running tasks including services.
TASKKILL       Kill or stop a running process or application.
TIME           Displays or sets the system time.
TITLE          Sets the window title for a CMD.EXE session.
TREE           Graphically displays the directory structure of a drive or
               path.
TYPE           Displays the contents of a text file.
VER            Displays the Windows version.
VERIFY         Tells Windows whether to verify that your files are written
               correctly to a disk.
VOL            Displays a disk volume label and serial number.
XCOPY          Copies files and directory trees.
WMIC           Displays WMI information inside interactive command shell.

For more information on tools see the command-line reference in the online help.

Help On A Specific Command

If you need help with any command, type /? after the command.

> dir /?
Displays a list of files and subdirectories in a directory.

DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
  [/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]

  [drive:][path][filename]
              Specifies drive, directory, and/or files to list.

  /A          Displays files with specified attributes.
  attributes   D  Directories                R  Read-only files
               H  Hidden files               A  Files ready for archiving
               S  System files               I  Not content indexed files
               L  Reparse Points             -  Prefix meaning not
  /B          Uses bare format (no heading information or summary).
  /C          Display the thousand separator in file sizes.  This is the
              default.  Use /-C to disable display of separator.
  /D          Same as wide but files are list sorted by column.
  /L          Uses lowercase.
  /N          New long list format where filenames are on the far right.
  /O          List by files in sorted order.
  sortorder    N  By name (alphabetic)       S  By size (smallest first)
               E  By extension (alphabetic)  D  By date/time (oldest first)
               G  Group directories first    -  Prefix to reverse order
  /P          Pauses after each screenful of information.
  /Q          Display the owner of the file.
  /R          Display alternate data streams of the file.
  /S          Displays files in specified directory and all subdirectories.
  /T          Controls which time field displayed or used for sorting
  timefield   C  Creation
              A  Last Access
              W  Last Written
  /W          Uses wide list format.
  /X          This displays the short names generated for non-8dot3 file
              names.  The format is that of /N with the short name inserted
              before the long name. If no short name is present, blanks are
              displayed in its place.
  /4          Displays four-digit years

Switches may be preset in the DIRCMD environment variable.  Override
preset switches by prefixing any switch with - (hyphen)--for example, /-W.
Displays a list of files and subdirectories in a directory.

DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
  [/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]

  [drive:][path][filename]
              Specifies drive, directory, and/or files to list.

  /A          Displays files with specified attributes.
  attributes   D  Directories                R  Read-only files
               H  Hidden files               A  Files ready for archiving
               S  System files               I  Not content indexed files
               L  Reparse Points             -  Prefix meaning not
  /B          Uses bare format (no heading information or summary).
  /C          Display the thousand separator in file sizes.  This is the
              default.  Use /-C to disable display of separator.
  /D          Same as wide but files are list sorted by column.
  /L          Uses lowercase.
  /N          New long list format where filenames are on the far right.
  /O          List by files in sorted order.
  sortorder    N  By name (alphabetic)       S  By size (smallest first)
               E  By extension (alphabetic)  D  By date/time (oldest first)
               G  Group directories first    -  Prefix to reverse order
  /P          Pauses after each screenful of information.
  /Q          Display the owner of the file.
  /R          Display alternate data streams of the file.
  /S          Displays files in specified directory and all subdirectories.
  /T          Controls which time field displayed or used for sorting
  timefield   C  Creation
              A  Last Access
              W  Last Written
  /W          Uses wide list format.
  /X          This displays the short names generated for non-8dot3 file
              names.  The format is that of /N with the short name inserted
              before the long name. If no short name is present, blanks are
              displayed in its place.
  /4          Displays four-digit years

Switches may be preset in the DIRCMD environment variable.  Override
preset switches by prefixing any switch with - (hyphen)--for example, /-W.

Listing The Files

To list out files, you can use the dir command.

> dir
Volume in drive C is OS
 Volume Serial Number is 80AE-F0C7

 Directory of C:\Users\mark

12/01/2017  02:13 PM    <DIR>          .
12/01/2017  02:13 PM    <DIR>          ..
12/01/2017  12:07 PM    <DIR>          .config
12/01/2017  01:23 PM    <DIR>          .docker
12/01/2017  12:12 PM                28 .gitconfig
12/01/2017  12:18 PM    <DIR>          .refresh
12/01/2017  11:44 AM    <DIR>          .vscode
12/01/2017  12:07 PM               121 .yarnrc
12/01/2017  11:17 AM    <DIR>          Contacts
12/01/2017  11:17 AM    <DIR>          Desktop
12/01/2017  11:17 AM    <DIR>          Documents
12/01/2017  02:14 PM    <DIR>          Downloads
12/01/2017  03:15 PM    <DIR>          Dropbox
12/01/2017  11:17 AM    <DIR>          Favorites
12/01/2017  11:53 AM    <DIR>          go
12/01/2017  11:19 AM    <DIR>          Links
12/01/2017  11:17 AM    <DIR>          Music
12/01/2017  02:25 PM    <DIR>          OneDrive
12/01/2017  11:18 AM    <DIR>          Pictures
09/02/2017  03:49 AM    <DIR>          Roaming
12/01/2017  11:17 AM    <DIR>          Saved Games
12/01/2017  11:18 AM    <DIR>          Searches
12/01/2017  11:17 AM    <DIR>          Videos
               2 File(s)            149 bytes
              21 Dir(s)  444,494,786,560 bytes free
Volume in drive C is OS
 Volume Serial Number is 80AE-F0C7

 Directory of C:\Users\mark

12/01/2017  02:13 PM    <DIR>          .
12/01/2017  02:13 PM    <DIR>          ..
12/01/2017  12:07 PM    <DIR>          .config
12/01/2017  01:23 PM    <DIR>          .docker
12/01/2017  12:12 PM                28 .gitconfig
12/01/2017  12:18 PM    <DIR>          .refresh
12/01/2017  11:44 AM    <DIR>          .vscode
12/01/2017  12:07 PM               121 .yarnrc
12/01/2017  11:17 AM    <DIR>          Contacts
12/01/2017  11:17 AM    <DIR>          Desktop
12/01/2017  11:17 AM    <DIR>          Documents
12/01/2017  02:14 PM    <DIR>          Downloads
12/01/2017  03:15 PM    <DIR>          Dropbox
12/01/2017  11:17 AM    <DIR>          Favorites
12/01/2017  11:53 AM    <DIR>          go
12/01/2017  11:19 AM    <DIR>          Links
12/01/2017  11:17 AM    <DIR>          Music
12/01/2017  02:25 PM    <DIR>          OneDrive
12/01/2017  11:18 AM    <DIR>          Pictures
09/02/2017  03:49 AM    <DIR>          Roaming
12/01/2017  11:17 AM    <DIR>          Saved Games
12/01/2017  11:18 AM    <DIR>          Searches
12/01/2017  11:17 AM    <DIR>          Videos
               2 File(s)            149 bytes
              21 Dir(s)  444,494,786,560 bytes free

You can paginate the results of the dir command with the /p flag.

> dir /p

Moving Into A Directory

To move into a directory, we use the cd (change directory) command.

> cd Documents
> cd C:\Users
> cd "C:\Program Files"

Notice how we had to use quotes to move into a directory that has a space in the name.

Moving Back A Directory

You can also use the cd command to move back a directory as well. To move back one directory, use the .. syntax.

> cd ..
> cd JaneSmith

You can move back to the root directory by using the \ symbol.

> cd \

Creating A Directory

use the mkdir command to create a directory.

> mkdir test

You can use the dir command to verify the directory has been created.

> dir test
Volume in drive C has no label.
 Volume Serial Number is 64B9-7C73

Directory of C:\Users\JaneSmith\test

11/30/2017  06:58 PM    <DIR>          .
11/30/2017  06:58 PM    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)  232,169,328,640 bytes free
Volume in drive C has no label.
 Volume Serial Number is 64B9-7C73

Directory of C:\Users\JaneSmith\test

11/30/2017  06:58 PM    <DIR>          .
11/30/2017  06:58 PM    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)  232,169,328,640 bytes free

Switching Drives

You can switch drives by simply typing the name of the drive followed by the :. To switch from the C drive to the D drive, issue the following command:

> D:\

Creating A File

You can create a file two different ways from the command line.

To touch a file and simple create it as a completely blank file:

> type nul > main.go

To create a file with one line in it:

> echo "hello" > foo.txt

Start Command

You can use the start command to run a command. For example, to open a file in notepad, you would use the following command:

> start notepad main.go

This will launch the notepad application with the main.go file loaded.

Additionally, you can open the current directory in windows explorer with this command:

> start .

Open Files/Folders With Visual Studio Code

If you have Visual Studio Code installed you can open a file directly from the command prompt.

> code foo.txt

You can also open the current folder/directory with Visual Studio Code.

> code .

Moving A File

You can use the move command to move files.

> move main.go test\
        1 file(s) moved.

This will move main.go into the test directory. Notice we didn't have to specify the file name if we want it to default to the current file name.

We can use the dir command to verify the file was actually moved.

> dir test
 Volume in drive C has no label.
 Volume Serial Number is 64B9-7C73

 Directory of C:\Users\JaneSmith\test

11/30/2017  06:59 PM    <DIR>          .
11/30/2017  06:59 PM    <DIR>          ..
11/30/2017  06:59 PM                 0 main.go
               1 File(s)              0 bytes
               2 Dir(s)  232,169,332,736 bytes free

Copying A File

You can copy a file using the copy command.

> copy main.go test\main.go
        1 file(s) copied.

Rename A File

You can use the rename command to rename a file.

> rename main.go main.txt

And again, we can verify it using the dir command.

> dir test
 Volume in drive C has no label.
 Volume Serial Number is 64B9-7C73

 Directory of C:\Users\JaneSmith\test

11/30/2017  07:00 PM    <DIR>          .
11/30/2017  07:00 PM    <DIR>          ..
11/30/2017  06:59 PM                 0 main.txt
               1 File(s)              0 bytes
               2 Dir(s)  232,169,144,320 bytes free

Deleting A File

You can use the del command to delete a file

> del main.go

Deleting A Directory

The rmdir command can be used to delete a directory.

> rmdir test

This will NOT delete a directory that contains files. To delete a directory that is not empty, you must use the /S flag.

> rmdir /S test

Renaming A Directory

You can rename a directory using the same command as renaming a file.

> rename test old

Closing Or Exiting The Window Command Line

To exit the command prompt, use the exit command. This will close the current window you are in.

Environment Variables

You can use the set keyword to list all the environment variables currently set for your command prompt:

C:\Users\JaneSmith>set
ALLUSERSPROFILE=C:\ProgramData
.
.
.
USERNAME=JaneSmith
USERPROFILE=C:\Users\JaneSmith
windir=C:\Windows
windows_tracing_flags=3
windows_tracing_logfile=C:\BVTBin\Tests\installpackage\csilogfile.log

Showing The Contents Of A File

The type command allows you to see the contents of a file.

Syntax

> type [drive:][path]file name

Example

> type main.go
package main

import "fmt"

func main() {
  fmt.Println("Hello, World!")
}

Tab Completion

The command prompt will automatically complete file and folder names for you. Start by typing the beginning of the file or folder name that you want completed:

> cd Des

Then press the tab key, and it will complete the name. If more than one name matches, pressing the tab key repeatedly will cycle through all possible matches.

> cd Desktop

History

The command line keeps a history of the last commands you have run. There are several ways to see and use your history.

  • Up Arrow: Recall the previous command you typed. Press the key repeatedly to walk through your command history.
  • Down Arrow: Recall the next command you typed. Press the key repeatedly to walk through your command history.
  • Page Up: Recall the first command you ran in the current Command Prompt session.
  • Page Down: Recall the most recent command you ran in the current Command Prompt session.
  • Esc: Clear the command line.

To bring up your entire history, press the F7 function key.

Command Line Overview

There are far too many commands to cover in this introduction. Here is a list for you to explore further:

command line overview