[英]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.