Getting Your Macro on with DOSKEY


I’m a big fan of the command line (much to the mirth of some of my co-workers). I do a lot of stuff through Git, Grunt and the like so I’ve usually got a Cmder window open somewhere.

When using Git, there are a bunch of commands that I use frequently so it’s handy to have a shortcut to these.

DOSKEY is a Windows utility that adds things like command history (via up and down arrows) and macro functionality for Windows XP and beyond (and 9 as well).

It’s the macro functionality that we’ll be looking at.

DOSKEY Usage

To add a macro (alias for you Linux types) using DOSKEY, the syntax is just:

doskey myshortcutcommand=my real command

So, if we wanted to use gp instead of git pull, the command would be:

doskey gp=git pull

Viewing Existing Macros

If you’re using Cmder, you’ll already have some macros set up. You can view these (and any you’ve added) using:

doskey /macros:all

Or, we can just add a macro to make it easier to remember:

doskey macros=doskey /macros:all

Passing Parameters

For some macros, we’ll want to pass parameters through from the macro to the original command. This is done using $*.

Let’s say we wanted to create an alias for git log so we could call things like gl -5. This would look like:

doskey gl=git log $*

Then we can call gl -5 to get the last 5 items.

Or, if we wanted to list commits in a custom format, we could do something like this:

doskey gl=git log --pretty=format:"%C(yellow)%h%Cblue%d %Creset%s%Cgreen [%cn, %ar]" $*

This format then produces output like this:

C:\\projects\kwilson.me.uk (post-updates)
λ gl -5
2581a75 New post. [Kevin Wilson, 3 weeks ago]
f899823 Next batch of post updates. [Kevin Wilson, 3 weeks ago]
8a3e9cc Added short text summary support. [Kevin Wilson, 3 weeks ago]
c235841 Updated heading font size hierarchy. [Kevin Wilson, 3 weeks ago]
d548533 Mass replace of layouts. [Kevin Wilson, 4 weeks ago]

Deleting a Macro

If you decide you want to delete a macro, it’s simply a case of setting the macro name to equal nothing:

doskey someoldalias=

Launching Apps

The last thing that I tend to use this for is launching various apps as needed.

Sublime Text

doskey subl=subl="C:Program FilesSublime Text 3subl.exe" $*

allows you to use

subl somefile.txt

Notepad++

doskey np="C:Program Files (x86)Notepad++notepad++.exe" $*

allows you to use:

np somefile.txt

Explorer

doskey e.=explorer .

allows you to use:

e.

to launch an explorer window in the current directory.

Go Play

So go and create some macros and let me know about any good ones you come up with.