2013-03-04 07:28:04 +0000 2013-03-04 07:28:04 +0000
71
71
Advertisement

Как установить псевдоним в командной строке Windows?

Advertisement

Раньше я работал над басом и много пользовался псевдонимом. Есть ли эквивалентный способ в командной строке Windows?

Я не хочу симулировать Linux окружение, поэтому cygwin - это не выбор. Мне просто нужен какой-нибудь ярлык для очень длинной команды, например cd a_very_long_path.

Advertisement

Ответы (7)

68
68
68
2013-03-04 12:03:15 +0000

Как сказал Кристиан.К. в своем комментарии, команда DOSKEY может быть использована для определения макросов, которые являются аналогом псевдонимов. Параметры

doskey macroName=macroDefinition

Макросы в определении ссылаются через префиксные позиции $: $1 через $9 и $* для всех.

Смотрите документацию doskey technet documentation , или введите doskey /? или help doskey из командной строки для получения дополнительной информации.

Но есть серьезные ограничения в макросах DOSKEY:

  • макросы работают только в интерактивной командной строке - они не работают в пакетном скрипте.
  • Они не могут быть использованы по обе стороны трубы: someMacro|findstr '^' и dir|someMacro не работают.
  • Они не могут быть использованы внутри команд FOR /F: for /f %A in ('someMacro') do ... fails

Ограничения настолько серьезны, что я редко использую макросы DOSKEY.

Очевидно, что вы можете создавать пакетные скрипты вместо макросов, и убедиться, что расположение скриптов находится в вашем PATH. Но тогда вы должны префиксовать каждый скрипт с помощью CALL, если вы хотите использовать скрипт внутри другого скрипта.

Вы можете создавать простые переменные “макросы” для длинных и часто используемых команд, но синтаксис немного неудобен для ввода, так как вам нужно расширить “макрос”, когда вы хотите его использовать.

Определение:

set "cdMe=cd a_very_long_path"

Использование (из командной строки или сценария)

%cdMe%
16
16
16
2013-03-04 13:01:49 +0000

Вы можете сделать пакетный скрипт и сохранить его в своем пути.

В Linux вы сделаете скрипт и добавите его в папку ~/bin в windows, где вы можете сделать то же самое.

Добавьте %USERPROFILE%\bin в переменную окружения PATH. Затем сохраните там свои скрипты.

quickcd.cmd

@echo off
cd /d a_very_long_path

Теперь вы можете набрать quickcd в командной строке.

Его также можно вызвать внутри сценария, используя функцию call

call quickcd
```.
14
Advertisement
14
14
2014-01-09 06:21:00 +0000

subst

Если ты действительно пытаешься обойти что-то вроде этого:

C:> cd \users\myLoginID\documents\clients\MTV\strategy\roadmap\deliverable\final

Вы можете использовать команду subst для отображения этого длинного пути к отдельной букве диска

subst m: c:\users\myLoginID\documents\clients\MTV\strategy\roadmap\deliverable\final

Тогда, когда вы хотите перейти в эту папку, вы можете просто набрать m: в командной строке.

Преимущество этого параметра перед doskey заключается в том, что он работает во всех пакетных программах и отображается в любом файловом диалоговом окне Windows.

Если вам больше не нужна связка:

subst m: /D
10
10
10
2013-03-11 10:14:50 +0000

Вы можете использовать тот же трюк, что и окна: установить переменную окружения (или просто переменную в пакетном контексте), например, есть переменная окружения %windir% (и некоторые другие). Таким образом, вы можете сделать

cd C:\Windows\

или

cd %windir%

, который делает то же самое. Так что все, что вам нужно сделать:

set "mydir=C:\very\long\path\to\my\data\"

после этого вы можете сделать (откуда бы вы ни находились):

dir %mydir%

или

cd %mydir%

или что угодно.

1
Advertisement
1
1
2015-09-09 18:42:36 +0000

Я сделал такой “псевдоним” специально для смены каталога. В основном я создал файл с именем fav.bat и поместил его в папку в PATH (например, C:\MyBatches):

@setlocal
@echo off
set userChoice=%1
rem The format is:
rem call :condition SHORTCUT FOLDER
call :condition web c:\Git\SecThor\SecWeb\App\
call :condition cloud c:\Git\SecThor\SecCloud\dojo.backend\
call :condition good c:\Users\Vitaly\Dropbox\Projects\goodread-friends\
endlocal
popd
GOTO :eof

:condition
rem We do PUSHD twice since endlocal does popd once :|
if "%userChoice%"=="%1" pushd %2 & pushd %2 & echo pushd %2
if "%userChoice%"=="" echo %1 =^> %2
GOTO :eof

Тогда я могу очень быстро перепрыгнуть в любую предопределенную папку. Я написал полную статью об этой технике здесь .

1
1
1
2019-02-18 12:41:06 +0000

Вы можете использовать doskey.exe , вот пример:

doskey qcd=cd [pathname]

И теперь, если вы наберете qcd, то он будет cd к этому пути.

Вот вам помощь с макросами doskey:

doskey [macroname]=[command]

Это самая простая форма, вот пример:

doskey word=echo This is a really, really long sentence.

и если вы набираете word, то выводится:

Это очень, очень длинное предложение.

Вы можете использовать $ 1-$9 для параметров, вот пример:

doskey npd=notepad $1

и если вы наберете npd, то откроется notepad, но если мы наберем npd test.txt, то откроется test.txt в notepad.

Можно использовать $* для всех параметров, вот еще один пример:

doskey prt=echo $*

, и если вы наберете prt This is short., то получится результат:

Это коротко.

Вы можете использовать $T для нескольких команд, вот пример:

doskey newline=echo $1 $T echo $2

и если вы наберете newline Hello and, то вывод будет: и если вы наберете , то вывод будет:

:

Здравствуйте

и

Надеюсь, вы понимаете.

0
Advertisement
0
0
2016-11-16 18:41:42 +0000

при условии, что вы останетесь на том же диске, т.е. не будет D:, а потом cd D:\somedirпри условии, что вы останетесь на том же диске, т.е. не будетD:`, а потом .

В моем случае C: содержит системные файлы, но вся работа ведется на D:

2 частях. сначала установите некоторые рабочие каталоги, используя пакетный файл.

скажем, localprofile.cmd. Вы можете иметь несколько таких каталогов, просто запустите их по мере необходимости.

set wd1=D:\home\work\fb440.dumper
set wd2=D:\home\work\py\tests

теперь используйте другой командный файл для перемещения, основываясь на тех переменных окружения, которые вы только что установили.

wd.cmd

echo off
d:
if %1.==. set | findstr wd
if %1==1 cd %wd1%
if %1==2 cd %wd2%
if %1==3 cd %wd3%
if %1==4 cd %wd4%
if %1==5 cd %wd5%
if %1==6 cd %wd6%

И немного примерного использования:

D:\home\bin>wd 2

D:\home\bin>echo off
D:\home\work\py\tests>wd 1

D:\home\work\py\tests>echo off

wd само по себе должно показать мне список каталогов с закладками. Это работает, но не уверен, почему я получаю это “неожиданное cd” сообщение.

D:\home\work\fb440.dumper>wd

D:\home\work\fb440.dumper>echo off
wd1=D:\home\work\fb440.dumper
wd2=D:\home\work\py\tests
cd was unexpected at this time.

D:\home\work\fb440.dumper>

Обычные .cmd партии

Помимо навигации по каталогам, вы можете создать foo.cmd где-нибудь в вашем PATH, и он может действовать как псевдоним. Помните, что в отличие от оболочек Linux/OSX, командные файлы могут влиять на переменные окружения и сеанс, без необходимости использования source.

У меня есть cdbin.cmd для навигации, например:

d:
cd \home\bin

И это псевдо-греп grep.cmd

findstr -n %1 %2

в действии (какой бы вид /+2 /+10 означает)

D:\home\work\fb440.dumper>grep class *.py | sort /+2 /+10

dumper2.py:18:class PrettySafeLoader(yaml.SafeLoader):            
dumper2.py:27:class Comparator(object):                           
dumper2.py:3:class module_settings:                               
linker2.py:5:class module_settings:                               
dumper2.py:65:class DataCompProcessor(object):                    
dumper2.py:69:class DataCompTextRenderer(DataCompProcessor):      
dumper2.py:76:class DataComparator(object):
``` 0x1&

Похожие вопросы

3
19
10
28
5
Advertisement
Advertisement