我創建了一個簡單的環境設置cmd腳本,我使用doskey
來設置各種別名和宏。我所在的環境有各種版本庫,我想創建一些宏以快速瀏覽熱門目錄。使用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
變量的情況下,無論我在哪個項目根目錄下,宏可以是相同的。
不幸的是,這不起作用,因爲看起來PROJECT_ROOT
是在創建宏時評估的。所以運行宏trunk
的結果是變量被設置,然後執行cd ""
。
有沒有什麼辦法可以讓宏重新評估PROJECT_ROOT
變量以防變化?
DOSKEY.exe-在DOS提示符下調用並編輯命令,並創建宏。通俗地說:您無法從批處理文件運行Doskey宏。 – Squashman
當我打開cmd提示符來設置我的環境時,立即調用上面的腳本。對不起,我不確定你想指出什麼。 – Fizz