command line – Create permanent DOSKEY in Windows cmd – Super User

Setup persistent aliases & macros in windows command prompt (cmd.exe) using doskey

Saved from, Date: May 14, 2022 Author: Jesse Webb

Our development machines here at Point2 are not standardized; we have a mixture of Windows XP, 7, and Mac OSX/Unix computers. I find myself constantly switching back and forth between command prompt interfaces when pair programming. As a result, I catch myself using “ls” to list a directories contents regardless of what system I am on. I am currently using a Windows XP machine for my developer box and I wanted to setup an alias to the “ls” command to actually perform a “dir”. Here is how I accomplished it…

There is a command available in a Window’s shell that let’s you “alias” command to whatever you please: DOSKey. It allows you to create “macros” to execute one or more other commands with a custom name. If you open up a command prompt and type in the following, you will now be able to use “ls” to list the current directory’s contents.

DOSKEY ls=dir

It also handles command line arguments, either by index or as a collection using $1 – $2 or $* respectively. This allows you to do things perform a “dir” command every time you change directories. This example would be done with the following macro definition.

DOSKEY cd=cd $1$Tdir

This all sounds very simple and easy until you close your command prompt, open a new one, and realize all of these macros you defined earlier did not persist between instances. The DOSKey command does not save these alias automatically. The DOSKey command does support saving the “currently defined macros” to a file which will allow you to run a simple command in any new shell to load macros from any saved file. The problem is, I already forget to use “dir” instead of “ls” so I know for sure I will not remember to run a certain DOSKey command every time I open up a new command prompt. I needed something more automatic.

I investigated what options I have for running commands as part of every run of cmd.exe. I found out there is a command line argument, K, that I can use on cmd.exe to tell it to run a ‘.cmd’ or ‘.bat’ file to run commands on startup. So you can run something like to following command to load a shell instance with the following command file being ran automatically.

cmd.exe /K C:pathtofile.cmd

This allows you to add all of the commands you want into that file and have them run automatically for the command prompt you are about to open. In order to pass this argument, I created a shortcut to cmd.exe in my Quick Launch toolbar which I could modify and use exclusively for my command prompt instances. This can easily be done by going into your C:WINDOWSsystem32 directory, right-clicking on cmd.exe and selecting “Send to Desktop”. Right click on the newly created shortcut (on your desktop) and select “Properties”. On the Shortcut tab, you will find the “Target” field which you will have to modify to include the command line option. Here is what my configuration looks like:

:/>  Раскладка клавиатуры компьютера - особенности расположения

command line - Create permanent DOSKEY in Windows cmd - Super User

The only other thing from my configuration worth mentioning is the “Start in” setting I have specified. The value “%HOMEDRIVE%%HOMEPATH%” will open the command prompt in your user’s home directory as opposed to the default which opens the new window in the system32 directory which usually isn’t very helpful.

My doskey.cmd file is also worth taking a look at. It only currently has a few alias for common Unix commands but it will give you a good idea of what kind of things are capable.

@echo off

DOSKEY ls=dir
DOSKEY cd=cd $1$Tdir
DOSKEY clear=cls

It is probably best to also include the “@echo off” at the top of your script too just so you don’t have to see the noise in the shell running your script. There are also a lot more powerful features to DOSKey that I have yet to experiment with but you can see how easy it is now to add permanent macros into your command prompt.

Another thing worth noting is that you should look at the other tabs in the cmd.exe Shortcut Properties window because it makes it easy to do things like increase the buffer size of text for the shell, change font sizes and color, as well configure the behavior of command history tracking. After tweaking with all these settings, here is my new custom, improved Command Prompt:

command line - Create permanent DOSKEY in Windows cmd - Super User

The only “gotcha” here is that you have to open command prompt window using the Shortcut but there are other tools available which will let you run Shortcuts a simple keystroke so this should not be an issue. I hope this makes every Window’s Command Prompt user’s life a little easier. 🙂

:/>  Не работает "Шифт" на клавиатуре: инструкция по устранению неполадок

Команда doskey

Загружает в память программу Doskey, которая вызывает команды MS-DOS и позволяет вам редактировать командные строки, а также создавать и запускать макрокоманды. Doskey — это резидентная в памяти программа. После установки Doskey занимает около 3 килобайт памяти.

            [/HISTORY][/INSERT /OVERSTRIKE] [макроимя=[текст]]

Чтобы запустить программу Doskey с установками по умолчанию, дайте команду:


Параметр макроимя=[текст] создает макрокоманду, которая выполняет одну или более команд MS-DOS (макрокоманду Doskey), «макроимя» задает имя, которое вы хотите присвоить макрокоманде, а «текст» задает записываемые команды.

Например, чтобы создать макрокоманду, выполняющую быстрое и безусловное форматирование диска, наберите:

     doskey qf=format $1 /q /u

Чтобы выполнить такую макрокоманду, введите qf a:.

Параметр /REINSTALL устанавливает новую копию программы Doskey, даже если она уже установлена. В последнем случае /REINSTALL также очищает буфер.

Параметр /BUFSIZE=размер задает размер буфера, в который Doskey записывает команды и макрокоманды Doskey. По умолчанию это 512 байт. Минимальный размер буфера — 256 байт.

/MACROS выводит список всех макрокоманд Doskey. /HISTORY выводит список всех команд в памяти. Для вывода списка в файл вы можете использовать символ перенаправления (>). /MACROS можно сократить до /M, а /HISTORY — до /H.

/INSERT /OVERSTRIKE определяет, будет ли новый набираемый вами текст замещать старый. При указании параметра /INSERT новый набираемый в строке текст вставляется в старый (как при нажатии клавиши INSERT). При задании /OVERSTRIKE новый текст будет заменять старый. По умолчанию устанавливается /OVERSTRIKE. Временно изменить режим можно клавишей INSERT.

Для вызова команды можно после загрузки Doskey в память использовать одну из клавиш, перечисленных в следующей таблице:

Восстановленную Doskey командную строку можно редактировать. Команды редактирования Doskey и их функции описаны в следующей таблице:


Стрелка влевоПеремещает курсор на символ назад.
Стрелка вправоПеремещает курсор на символ вперед.
CTRL стрелка влевоПеремещает курсор на слово назад.
CTRL стрелка вправоПеремещает курсор на слово вперед.
HOMEВозвращает курсор к началу строки.
ENDПеремещает курсор в конец строки.
ESCСтирает команду с экрана.
F1Копирует один символ из шаблона (буфера, содержащего последнюю набранную команду) в командную строку MS-DOS.
F2Выполняет в шаблоне поиск в прямом направлении следующей нажатой после F2 клавиши. Doskey вставляет текст из шаблона до заданного символа (не включая его).
F3Копирует остаток шаблона в командную строку. Doskey начинает копирование символов с позиции в шаблоне, соответствующей позиции, указанной курсором в командной строке.
F4Удаляет символы, начиная от текущей позиции до заданного символа. Чтобы использовать эту клавишу, нажмите F4 и наберите символ. Doskey выполняет удаление до этого символа, исключая его.
F5Копирует текущую команду в шаблон и очищает командную строку.
F6Помещает в текущую позицию командной строки символ конца файла (CTRL Z).
F7Выводит на экран все сохраненные в памяти команды с соответствующими номерами (Doskey присваивает номера последовательно, начиная с первой команды).
ALT F7Удаляет все сохраненные в памяти команды.
F8Ищет в памяти команду, которую вы хотите вывести. Наберите первые несколько символов искомой команды и нажмите F8. Doskey выводит последнюю команду, начинающуюся с данного текста. Повторное нажатие F8 приводит к поиску следующей такой команды.
F9Выводит подсказку для ввода номера команды и выводит ее на экран.
ALT F10Удаляет все макроопределения.
:/>  Настройка стерео микшера windows 7

При определении макрокоманд вы можете использовать следующие специальные символы:

Символ $* — это подставляемый параметр, аналогичный параметрам $1 — $9 командного файла, однако все, что вы набираете в командной строке после имени макрокоманды, подставляется в макрокоманду вместо $*.

Чтобы выполнить макрокоманду, наберите имя макрокоманды в командной строке, начиная с первой позиции. Если макрокоманда была определена с помощью $* или параметра с $1 по $9, используйте для разделения параметров пробелы. Из командного файла выполнять макрокоманду нельзя, но для создания макрокоманды вы можете использовать команду DOSKEY в командном файле. Вы можете также создать макрокоманду, имя которой совпадает с именем команды MS-DOS. Это может оказаться полезным, например, если вы всегда пользуетесь командой с определенными параметрами. При этом:

Для удаления макрокоманды наберите команду:

     doskey макроимя=.

Приведем пример. Чтобы создать макрокоманду mv для перемещения файла или файлов, наберите команду:

     doskey mv=copy $1 $2 $t del $1

Оставьте комментарий