2014-02-07 88 views
0

这是一个简单的bat脚本,应该从svn中检出一些文件夹。我对蝙蝠脚本没有那样的了解,似乎在变量引用方面没有一致性。 例如变量“branchV”没有被追加,它被看作'''',但如果我回显它,我看到用户输入。有人能告诉我这个蝙蝠脚本有什么问题吗?

set "DB_DIRECTORIES=AuditUser-db CarrierProcessingRules-db iDetectDB-db iRisk-db  WarningsIndex-db" 
set "SVNBASEURL=http://XX.XX.XX.XX:7777/svn/YYY" 
set BASELOCALDIRECTORY="C:" 
@echo on 


@cls 


@echo Check out DB directories from? 
@echo 
@echo 1. Trunk 
@echo 2. Branch 
@echo 
@echo 
@set OPTIONSELECTED= 
@set /P OPTIONSELECTED=SELECT OPTION:%=% 


if "%OPTIONSELECTED%" == "1" (


set SVNURL="%SVNBASEURL%/trunk" 
set BRANCHV="BCSTrunk" 

) ELSE IF %OPTIONSELECTED% == 2 (

@echo 
@echo 
@echo 
@echo PLEASE ENTER THE BRANCH VERSION YOU WISH TO CHECKOUT 
@echo 
@echo 
@set branchV= 
@set /P branchV=ENTER VERSION:%=% 
@echo 

set SVNURL="%SVNBASEURL%"/branches/"%branchV%" 

) ELSE (
@echo Invalid option 

) 


for %%i in (%DB_DIRECTORIES%) do (

set PATHTOUSE="%BASELOCALDIRECTORY%"/"%branchV%"/%%i 
set NEWSVNURL="%SVNURL%"/%%i 
REM Intended to remove all inverted commas , which were causing an issue in svn 
set PATHTOUSE="%PATHTOUSE:=%" 
set NEWSVNURL=%NEWSVNURL:=% 


    TortoiseProc.exe /command:checkout /path:%PATHTOUSE% /url:%NEWSVNURL% /closeonend:1 

) 
+0

邮政演示您遇到的问题很短的版本。 – GreenAsJade

+1

@GreenAsJade,没必要。他们缺乏延期扩张,可以快速浏览他们发布的信息来源的末尾。 – Joey

+0

如果你可能会被困扰阅读所有无关的行,以确保这一切。但是,这是发送给新用户的正确信息:可以将整个脚本放在一堆无意义的东西上,并希望得到答案吗?在没有滚动的页面上,BranchV几乎没有变化! – GreenAsJade

回答

2

在批处理脚本,当达到线或代码(括号中的代码)的块时,所有的变量读取与它们具有的值替换之前开始执行该行或块。因此,如果您更改块内的变量,则无法在同一个块内检索此值。没有读取变量值,它们被替换为它的值。

要正确检索同一块内的已更改值,必须向cmd指示读取操作应延迟到执行该行为止。要做到这一点,需要两个步骤。首先是启用该选项

​​

启用后,应读延迟变量需要sintax !var!而不是%var%

相关问题