私は以前bashを使っていて、エイリアスの恩恵をたくさん受けていました。Windowsコマンドラインに同等の方法はありますか?
Linux環境をシミュレートしたくないので、cygwinは選択できません。のような非常に長いコマンドのショートカットが必要cd a_very_long_path
です。
私は以前bashを使っていて、エイリアスの恩恵をたくさん受けていました。Windowsコマンドラインに同等の方法はありますか?
Linux環境をシミュレートしたくないので、cygwinは選択できません。のような非常に長いコマンドのショートカットが必要cd a_very_long_path
です。
回答:
Christian.Kがコメントで述べたように、DOSKEYコマンドを使用して、エイリアスに類似したマクロを定義できます。
doskey macroName=macroDefinition
マクロのパラメータは、経由での定義で参照されている$
接頭辞位置:$1
経由$9
して$*
すべてのために。
参照してくださいDOSKEYのTechNetドキュメント、またはタイプdoskey /?
やhelp doskey
詳細については、コマンドラインからを。
ただし、DOSKEYマクロには重大な制限があります。
someMacro|findstr '^'
とdir|someMacro
失敗します。for /f %A in ('someMacro') do ...
失敗します制限は非常に厳しいため、DOSKEYマクロはほとんど使用しません。
もちろん、マクロの代わりにバッチスクリプトを作成し、スクリプトの場所がPATHにあることを確認できます。ただし、別のスクリプト内でスクリプトを使用する場合は、各スクリプトの前にCALLを付ける必要があります。
長くて頻繁に使用されるコマンドに対して単純な変数「マクロ」を作成できますが、使用するときに「マクロ」を展開する必要があるため、構文を入力するのは少し厄介です。
定義:
set "cdMe=cd a_very_long_path"
使用法(コマンドラインまたはスクリプトから)
%cdMe%
バッチスクリプトを作成して、パスに保存できます。
Linuxでは、スクリプトを作成し、それを~/bin
Windows上のフォルダーに追加して、同じ操作を行うことができます。
環境変数に追加%USERPROFILE%\bin
しますPATH
。次に、そこにスクリプトを保存します。
quickcd.cmd
@echo off
cd /d a_very_long_path
これquickcd
で、コマンドラインで入力できます。
call
関数を使用してスクリプト内で呼び出すこともできます
call quickcd
Microsoft Windows [Version 10.0.17134.648]
/d
フラグを追加する必要があるかもしれませんCD
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
Windowsが使用する同じトリックを使用できます:環境変数(またはバッチコンテキストの変数)を設定します。たとえば、環境変数%windir%(および他のいくつか)があります。
cd C:\Windows\
または
cd %windir%
同じことをします。だから、あなたがしなければならないことは次のとおりです:
set "mydir=C:\very\long\path\to\my\data\"
その後、あなたは(あなたがどこからでも)することができます:
dir %mydir%
または
cd %mydir%
またはあなたが望むもの。
Linuxとは異なり、Windowsではエイリアスに引数を使用でき、定義にそれらの引数を割り当てるパラメーターを指定できます。
内部の組み込みコマンドはdoskeyです。これは、外部の実行可能ファイルでは%SystemRoot%\System32
なく、cmd.exe
それ自体がデフォルトでフォルダーを指す%SystemRoot%
か、または%Windir%
両方を指す機能であることを意味C:\Windows
します。
Doskeyは、他の多くのものの中でもエイリアスを定義しています。Windowsの用語では、エイリアスはマクロと呼ばれます。使用するエイリアスを設定するには
doskey alias=command $1 $2 ... $9 or $* (to catch them all)
ここで$1
は、最初の引数を$*
指し、すべての引数を指します。
特殊文字として、つまりセパレータとして(コマンド用に)扱われるスペースを省略する引数が1つしかない場合は$*
、常に二重引用符を使用$1
します。
さらに、別名マクロを別のファイルに定義して、たとえばLinuxAliases.macro
、
doskey /macrofile=LinuxAliases.macro
現在のセッションでのみファイル内に定義されているすべてのエイリアスをロードします。つまり、exit
アウトオブcmd.exe
プロセス(シェルおよびコマンドプロンプトとも呼ばれます)の場合、それらは削除されます。
永続的なエイリアスを作成するには、AutoRunまたはAutoCommandのいずれかと呼ばれるregeditキーのどこかに完全なコマンドを入力します。マクロファイルの内部構文と一緒に今思い出すことはできません:P
特にディレクトリを変更するための「エイリアス」を作成しました。基本的に、という名前のファイルを作成し、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
その後、事前定義されたフォルダにすばやくジャンプできます。ここでそのテクニックに関する完全な記事を書きました。
あなたが同じドライブに残っていると仮定します。つまりD:
、cd D:\somedir\
不要です。
私の場合、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.cmdを PATHのどこかに作成し、エイリアスとして機能させることができます。Linux / OSXシェルとは異なり、cmdファイルは環境変数とセッションに影響を与える可能性があり、それらをソースする必要はありません。
たとえば、次のようにナビゲートするcdbin.cmdがあります。
d:
cd \home\bin
そして、これは擬似grep 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):
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
するとメモ帳が開きますが、入力npd test.txt
するとtest.txtがメモ帳で開きます。
すべてのパラメータに$ *を使用できます。別の例を次に示します。
doskey prt=echo $*
あなたが入力した場合とprt This is short.
、出力は次のようになります。
これは短いです。
複数のコマンドに$ Tを使用できます。以下に例を示します。
doskey newline=echo $1 $T echo $2
あなたが入力した場合とnewline Hello and
、出力は次のようになります。
こんにちは
そして
ご了承ください。
doskey
(古いMS DOS doskeyではない名前にだまされないでください)。doskey /?
詳細については使用してください。それ以外は、この質問はここではトピック外です。