我正在尝试根据调用脚本时传递的第一个参数值连接重复字符串。此值表示当前目录距离用户正在工作的存储库根目录的目录级别数。这是我目前的脚本:
set REPO_ROOT="%~1"
set "UPPATH=.\"
set "UPDIR=..\"
for /l %%i in (1,1,%REPO_ROOT%) do set "UPPATH=%UPPATH%%UPDIR%"
echo %UPPATH%
我的问题是,如果我硬编码set "UPPATH=%UPPATH%%UPDIR%"
任意多次,它都可以正常工作,但它似乎不想在循环中工作。任何关于如何让此循环与传递的参数一起工作的想法或建议都将不胜感激。谢谢。
答案1
它运行良好,但它似乎不想在循环中工作。
您需要设置EnableDelayedExpansion
。
启用延迟扩展
延迟扩展将导致变量在执行时而不是在解析时扩展,此选项通过命令打开
SETLOCAL
。当延迟扩展生效时,可以使用 !variable_name! 引用变量(除了正常的 %variable_name% )例子
Setlocal EnableDelayedExpansion
来源启用延迟扩展
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 启用延迟扩展- 延迟扩展将导致变量在执行时而不是在解析时扩展。