Doskey works in modern versions of Windows for setting aliases for single commands, e.g. doskey foo=bar.
There's a slight problem trying to use it for compound commands like doskey foo=bar & baz since this gets interpreted as (doskey foo=bar) & baz. The obvious fix would be to add explicit parentheses, doskey foo=(bar & baz) but for some reason this doesn't work, and doskey foo="bar & baz" doesn't work either.
To (somewhat) add on to Dennis Williamson's answer, you can also escape the pipe character in order to pipe commands! For example, I wanted a command that copies stuff to the clipboard. Due to the way COPY will interpret it, you need to do a goofy looking command for it to actually copy the text you specify without it being followed by a newline.
In order to define a macro for copying to the clipboard, you can escape the pipe with ^:
doskey cc=echo^|set /p=$*^|clip
Upon execution of the command cc hey, you will now have hey copied to the clipboard!