6

私は単純な環境セットアップ コマンド スクリプトを作成しており、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変数を動的に設定すると、現在のプロジェクト ルートに関係なくroottoolsマクロが同じになる可能性があります。

PROJECT_ROOT残念ながら、マクロの作成時に評価されるように見えるため、これは機能しません。したがって、マクロを実行した結果trunk、変数が設定されてから が実行されcd ""ます。

PROJECT_ROOT変数が変更された場合に、マクロに変数を再評価させる方法はありますか?

4

1 に答える 1