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

Comment définir un alias dans la ligne de commande Windows ?

J'ai travaillé sur des bash et j'ai beaucoup profité des alias. Y a-t-il un moyen équivalent dans la ligne de commande Windows ?

Je ne veux pas simuler un environnement Linux, donc cygwin n'est pas un choix. J'ai juste besoin d'un raccourci pour une commande très longue, comme cd a_very_long_path.

Réponses (7)

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

Comme l'a dit Christian.K dans son commentaire, la commande DOSKEY peut être utilisée pour définir des macros, qui sont analogues à des pseudonymes.

doskey macroName=macroDefinition

Les paramètres des macros sont référencés dans la définition via $ positions préfixées : $1 à $9 et $* pour tous.

Voir la documentation doskey technet , ou taper doskey /? ou help doskey à partir de la ligne de commande pour plus d'informations.

Mais les macros DOSKEY présentent de sérieuses limitations :

  • Les macros ne fonctionnent que sur la ligne de commande interactive - elles ne fonctionnent pas dans un script batch.
  • Elles ne peuvent pas être utilisées de part et d'autre d'un tube : Les macros someMacro|findstr '^' et dir|someMacro échouent toutes les deux.
  • Elles ne peuvent pas être utilisées dans une commande FOR /F : for /f %A in ('someMacro') do ... échoue

Les limitations sont si sévères que j'utilise rarement les macros DOSKEY.

Evidemment, vous pouvez créer des scripts batch au lieu de macros, et assurez-vous que les emplacements des scripts sont dans votre PATH. Mais vous devez alors préfixer chaque script avec CALL si vous voulez utiliser le script dans un autre script.

Vous pouvez créer de simples “macros” de variables pour les commandes longues et souvent utilisées, mais la syntaxe est un peu compliquée à taper, car vous devez développer la “macro” lorsque vous voulez l'utiliser.

Définition :

set "cdMe=cd a_very_long_path"

Utilisation (en ligne de commande ou dans un script)

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

Vous pouvez faire un script de lot et l'enregistrer dans votre chemin.

Sous Linux, vous pouvez créer un script et l'ajouter au dossier ~/bin sous Windows, vous pouvez faire de même.

Ajoutez %USERPROFILE%\bin à votre variable d'environnement PATH. Puis enregistrez vos scripts dans ce dossier.

quickcd.cmd

@echo off
cd /d a_very_long_path

Maintenant vous pouvez taper quickcd en ligne de commande.

Il peut également être appelé à l'intérieur d'un script en utilisant la fonction call

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

subst

Si vous essayez vraiment de contourner quelque chose comme ça :

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

Vous pouvez utiliser la commande subst pour faire correspondre ce long chemin à une lettre de lecteur séparée

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

Ensuite, lorsque vous voulez sauter dans ce dossier, vous pouvez simplement taper m: à la ligne de commande.

L'avantage par rapport à doskey est qu'il fonctionne dans tous les programmes de traitement par lots, et qu'il apparaît dans n'importe quelle boîte de dialogue de fichier de Windows.

Si vous ne voulez plus de la correspondance :

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

Vous pourriez utiliser la même astuce que celle utilisée par Windows : définir une variable d'environnement (ou juste une variable dans un contexte de lot) ; par exemple, il y a une variable d'environnement %windir% (et quelques autres) ; vous pouvez donc faire un

cd C:\Windows\

ou

cd %windir%

qui fait la même chose. Donc, tout ce que vous avez à faire, c'est :

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

après cela, vous pouvez faire (où que vous soyez) :

dir %mydir%

ou

cd %mydir%

ou ce que vous voulez.

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

J'ai créé un “alias” comme celui-là spécialement pour changer de répertoire. En gros, j'ai créé un fichier nommé fav.bat et je l'ai placé dans un dossier dans PATH (par exemple C:\Mes Lots) :

@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

Ensuite, je peux sauter très rapidement dans n'importe quel dossier prédéfini. J'ai écrit un article complet sur cette technique ici .

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

Vous pouvez utiliser doskey.exe, voici un exemple :

doskey qcd=cd [pathname]

Et maintenant si vous tapez qcd alors il y aura cd vers ce chemin.

Voici un peu d'aide avec les macro’s doskey :

doskey [macroname]=[command]

C'est la forme la plus simple, voici un exemple :

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

et si vous tapez word la sortie est :

C'est une très, très longue phrase.

Vous pouvez utiliser 1 à 9 dollars pour les paramètres, voici un exemple :

doskey npd=notepad $1

et si vous tapez npd cela ouvrira notepad mais si nous tapons npd test.txt cela ouvrira test.txt dans notepad.

Vous pouvez utiliser $* pour tous les paramètres, voici un autre exemple :

doskey prt=echo $*

et si vous tapez prt This is short. alors la sortie sera :

C'est court.

Vous pouvez utiliser $T pour plusieurs commandes, voici un exemple :

doskey newline=echo $1 $T echo $2

et si vous tapez newline Hello and alors la sortie sera :

Ceci est court :

Bonjour

et

J'espère que vous comprenez.

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

en supposant que vous restiez sur le même disque, c'est-à-dire pas de D: puis cd D:\somediren supposant que vous restiez sur le même disque, c'est-à-dire pas deD:` puis nécessaire.

Dans mon cas, C: contient les fichiers système, mais tout le travail se fait sur D:

2 parties. Commencez par définir quelques répertoires de travail, en utilisant un fichier batch.

disons localprofile.cmd. Vous pouvez en avoir plusieurs, il suffit de les lancer selon vos besoins.

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

maintenant utilisez un autre fichier de commande pour vous déplacer, en fonction des variables d'environnement que vous venez de définir.

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%

Et un petit exemple d'utilisation :

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 seul est censé me montrer la liste des répertoires marqués d'un signet. Il fonctionne, mais je ne sais pas trop pourquoi je reçois ce message “cd inattendu”.

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>

lots de .cmd réguliers

En dehors de la navigation dans les répertoires, vous pouvez créer un foo.cmd quelque part sur votre PATH et il peut servir d'alias. N'oubliez pas que, contrairement aux shells Linux/OSX, les fichiers cmd peuvent affecter les variables d'environnement et la session, sans qu'il soit nécessaire de les source.

J'ai un cdbin.cmd pour me naviguer, par exemple :

d:
cd \home\bin

Et voici un pseudo-grep grep.cmd

findstr -n %1 %2

en action (quel que soit le tri /+2 /+10 signifie)

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):
```.