Windowsコマンドラインでエイリアスを設定するには?
私は以前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 /?
で参照されます。
詳細は doskey technet documentation を参照するか、コマンドラインから help doskey
または someMacro|findstr '^'
と入力してください。
しかし、DOSKEYマクロには重大な制限があります。
dir|someMacro
と for /f %A in ('someMacro') do ...
の両方が失敗します。この制限は非常に厳しく、私は DOSKEY マクロをほとんど使わない。
明らかに、マクロの代わりにバッチスクリプトを作成して、スクリプトの場所が PATH にあることを確認することができます。しかし、他のスクリプトの中でスクリプトを使いたい場合は、各スクリプトの前に CALL を付けなければなりません。
長くてよく使われるコマンドのためのシンプルな変数「マクロ」を作成することもできますが、構文は少し入力しづらいです。
定義。
set "cdMe=cd a_very_long_path"
使用法 (コマンドラインまたはスクリプトから)
%cdMe%
バッチスクリプトを作成してパスに保存することができます。
Linuxではスクリプトを作成して~/bin
フォルダに追加します。
環境変数%USERPROFILE%\bin
にPATH
を追加してください。そして、そこにスクリプトを保存します。
quickcd.cmd
@echo off
cd /d a_very_long_path
これでコマンドラインでquickcd
と入力できるようになりました。
call
関数 0x6&
call quickcd
``` を使用してスクリプト内で呼び出すこともできます。
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
doskey qcd=cd [pathname]
qcd
と入力すると、そのパスに cd が表示されます。
doskey [macroname]=[command]
word
と入力すると、そのパスに cd が移動します。
doskey word=echo This is a really, really long sentence.
これが最も単純な形式で、以下に例を示します:
doskey npd=notepad $1
npd
と入力すると出力されます。
doskey prt=echo $*
と入力すると、出力は次のようになります。
doskey newline=echo $1 $T echo $2
と入力すると notepad が開きますが、npd test.txt
と入力すると notepad の test.txt が開きます。
0x1&
と入力すると出力されます。
0x1&
と入力すると、出力は次のようになります。
0x1&
と入力すると出力されます。
Hello
と
ご理解いただけたでしょうか。
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自体がブックマークされたディレクトリのリストを表示するようになっています。これは動作しますが、なぜ “exunpected 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 バッチ
ディレクトリのナビゲーションとは別に、PATH のどこかに foo.cmd を作成することができます。Linux/OSX シェルとは異なり、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):
``` となります。