簡體   English   中英

循環語句的批處理文件

[英]Batch file for loop statement

我將下面的批處理文件放在一起; 我對批處理文件沒有太多的經驗,也無法弄清楚為什么文件失敗並顯示一條錯誤消息,指出:

DO命令是意外的。

看下面的代碼,有人知道我做錯了嗎? 謝謝。

@ECHO OFF
REM Set arguments supplied by Subversion 
SET REPOS = %1
SET REV = %2

REM Set working directory path 
SET WORKSPACE = D:\apache\htdocs

REM Assign changes to variable 
SET CHANGES = svnlook changed %REPOS% -r %REV% 

REM Update only changed files  
FOR /f %%a IN %CHANGES% DO svn update %%a
FOR /f %%a IN %CHANGES% DO svn update %%a

應該

FOR /f %%a IN (%CHANGES%) DO svn update %%a

希望這可以幫助,

我猜測%CHANGES%的循環格式/結構不正確,因此無法執行DO 在循環之前添加以下行,以檢查您是否從SET CHANGES命令中獲得了期望的結果;

ECHO %CHANGES%

如果分配的批處理代碼較多,則可能需要使用CALL 調用%1%2的批處理文件時傳遞的是什么?

您可以嘗試在沒有REM語句的情況下運行它嗎? 注釋有時會使事情有所不同。

修改完原始代碼后,我就可以正常工作了。 svnlook命令返回例如:trunk \\ images \\ smileyface.jpg

當前,for循環僅返回我想要的“ U”而不是“ smileyface.jpg”。 因此,盡管代碼現在可以工作,但它確實可以按我的意願運行(仍在工作)。

下面是經過修改的代碼(注意:我必須刪除變量及其分配的值之間的所有空格)。

@ECHO OFF
REM Set arguments supplied by Subversion 
SET REPOS=%1
SET REV=%2

REM Set working directory path 
SET WORKSPACE=D:\apache\htdocs

REM Assign changes to variable 
SET CHANGES=svnlook changed %REPOS% -r %REV% 

REM Update only changed files  
FOR /F "usebackq" %%a IN (`%CHANGES%`) DO (svn update %%a)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM