我对批处理脚本非常陌生,所以请考虑一下。
我尝试在登录Windows时自动更新所有SVN项目文件夹。
问题出在for循环中。我想迭代所有路径变量,但它似乎无法工作。
这是代码。
@echo off
set svnPath="C:\Program Files\TortoiseSVN\bin\svn.exe"
set numPaths=3
set path1=C:\projects
set path2=E:\projects\ConnectsProjects
set path3=E:\projects\CSLibs
set /P ANSWER=Would you like to synchronize with SVN? (y/n)
if /I {%ANSWER%}=={y} (
echo --- Synchronizing with SVN repository ---
for /L %%i in (1,1,3) do (
%svnPath% update !path%%i!
echo --- Updated path !path%%i! ---
)
echo --- Finished ---
sleep 2
)
问题是svn update命令实际上是参数!path%%i!
。
我在一些谷歌搜索结果中找到了这个语法,所以它不应该是正确的吗?
感谢您的帮助。
问候Johny
答案 0 :(得分:3)
你需要
`setlocal enabledelayedexansion`.
考虑在if
- 块中使用延迟变量,我认为你知道延迟扩展。所以你忘记了这一行。
其他"搜索者":最好在@echo off