私は単純な環境セットアップ コマンド スクリプトを作成しており、doskey
さまざまなエイリアスとマクロのセットアップに使用しています。私が使用している環境にはさまざまなリポジトリがあり、人気のあるディレクトリをすばやく移動するためのマクロをいくつか作成したいと考えていました。
私は現在、次のものを持っています:
@echo off
Setlocal EnableDelayedExpansion
set PROJECTS_PATH=%SystemDrive%\Projects
echo. Updating path...
REM Update PATH here
echo. Setting up macros...
doskey np="%SystemRoot%\System32\notepad.exe" $*
doskey np+="%ProgramFiles(x86)%\Notepad++\notepad++.exe" $*
doskey ..=cd ..
doskey trunk=set PROJECT_ROOT=%PROJECTS_PATH%\Trunk ^& cd "!PROJECT_ROOT!"
doskey trunk2=set PROJECT_ROOT=%PROJECTS_PATH%\Trunk2 ^& cd "!PROJECT_ROOT!"
doskey root=cd "%PROJECT_ROOT%"
doskey tools=cd "%PROJECT_ROOT%\tools"
私が望んでいたのは、trunk
マクロを使用して変数を設定し、PROJECT_ROOT
遅延展開を使用してこの新しく設定された変数に移動できることでした。次に、コマンドを使用すると、変数trunk2
が再びリセットされ、その場所に移動します。PROJECT_ROOT
最後に、PROJECT_ROOT
変数を動的に設定すると、現在のプロジェクト ルートに関係なくroot
とtools
マクロが同じになる可能性があります。
PROJECT_ROOT
残念ながら、マクロの作成時に評価されるように見えるため、これは機能しません。したがって、マクロを実行した結果trunk
、変数が設定されてから が実行されcd ""
ます。
PROJECT_ROOT
変数が変更された場合に、マクロに変数を再評価させる方法はありますか?