2014-02-07 111 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%

相關問題