Пакетный файл для оператора цикла - PullRequest
1 голос
/ 25 августа 2009

Я собрал пакетный файл ниже; У меня нет большого опыта работы с пакетными файлами, и я не могу понять, почему файл завершается ошибкой, с сообщением об ошибке, в котором говорится:

Команда 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

Ответы [ 4 ]

6 голосов
/ 25 августа 2009
FOR /f %%a IN %CHANGES% DO svn update %%a

должно быть

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

Надеюсь, это поможет,

0 голосов
/ 27 августа 2009

После изменения моего исходного кода он у меня работает. Например, команда 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)
0 голосов
/ 25 августа 2009

вы можете попробовать запустить его без оператора REM. Комментарии иногда заставляют вещи работать по-другому.

0 голосов
/ 25 августа 2009

Я предполагаю, что %CHANGES% имеет неправильный формат / структуру для цикла, поэтому DO не может быть выполнен. Добавьте следующую строку перед циклом, чтобы убедиться, что вы получаете то, что ожидали от команды SET CHANGES;

ECHO %CHANGES%

Если для выполнения назначено больше кода пакета, вам может понадобиться использовать CALL. Что вы передаете при вызове командного файла для %1 и %2?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...