如何在批处理脚本中连接重复字符串

如何在批处理脚本中连接重复字符串

我正在尝试根据调用脚本时传递的第一个参数值连接重复字符串。此值表示当前目录距离用户正在工作的存储库根目录的目录级别数。这是我目前的脚本:

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

来源启用延迟扩展

查看回答经过乔伊以获得关于为什么需要这样做的更详细解释。


进一步阅读

相关内容