对于每个循环在批处理文件中不起作用

时间:2014-07-31 08:44:49

标签: batch-file tortoisesvn

我对批处理脚本非常陌生,所以请考虑一下。

我尝试在登录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

1 个答案:

答案 0 :(得分:3)

你需要

`setlocal enabledelayedexansion`.

考虑在if - 块中使用延迟变量,我认为你知道延迟扩展。所以你忘记了这一行。

其他"搜索者":最好在@echo off

后完成。