我创建了一个简单的环境设置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