Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
Можно попробовать так: [upd]19.09.06 17:08 Число просмотров: 3794 Автор: Den <Денис Т.> Статус: The Elderman Отредактировано 19.09.06 17:12 Количество правок: 1
for /F %%i "КлючевыеСловаРазбора" in ('command') do mycheck.bat %%i
Где:
command - программа, стандартный вывод которой нужно обработать.
mycheck.bat - скрипт (или метка в этом же cmd скрипте), который обрабатывает переданные через %1 и т.д. параметры.
Возможно придется повозиться с разделителями в выхлопе программы, для этого подробности смотри по ссылке в разделе "КлючевыеСловаРазбора".
Хочу в cmd файле проверить есть ли изменения в репозитории svn
Команда svn st возвращает список изменений. Если изменений нет, то соответственно и выводится 0 байт. ERRORLEVEL всегда 0 (ошибок нет)
Собственно хочу перенаправить поток вывода в переменную, а уж ее то я как нибудь проверю.
Ясен пень никаких bash-евых `svn st` не выйдет, забавно, что
svn st >tmpfile
set /p SVNOUT=<tmpfile
---
работает, а
svn st | set /p SVNOUT=
---
нет.
Что то мне подсказывает, что для второй команды в цепочке запускается отдельный shell и переменная изменяется в нем. После завершения цепочки этот шелл благополучно завершается вместе с установленной переменной. Как протолкнуть установленную переменную назад понятия не имею.
Создание временных файлов - не вариант. Может есть какой нибудь способ достичь желаемого?
Можно попробовать так: [upd]19.09.06 17:08 Автор: Den <Денис Т.> Статус: The Elderman Отредактировано 19.09.06 17:12 Количество правок: 1
for /F %%i "КлючевыеСловаРазбора" in ('command') do mycheck.bat %%i
Где:
command - программа, стандартный вывод которой нужно обработать.
mycheck.bat - скрипт (или метка в этом же cmd скрипте), который обрабатывает переданные через %1 и т.д. параметры.
Возможно придется повозиться с разделителями в выхлопе программы, для этого подробности смотри по ссылке в разделе "КлючевыеСловаРазбора".
> Что то мне подсказывает, что для второй команды в цепочке > запускается отдельный shell и переменная изменяется в нем. > После завершения цепочки этот шелл благополучно завершается > вместе с установленной переменной.
Да, всё именно так и происходит. Даже обидно, что ты сам понял, я так люблю всё объяснять :(
> Создание временных файлов - не вариант. Может есть какой > нибудь способ достичь желаемого?
AFAIK, создание временных файлов является, официально, самым простым вариантом для этого. Кроме того, он ещё и самый платформонезависимый, учитывая неожиданные флюктуации происходящие с синтаксисом cmd в разных версиях винды. Сам пользуюсь ими.
[cmd.exe] Прикол с временным файлом в том19.09.06 13:55 Автор: amirul <Serge> Статус: The Elderman
> AFAIK, создание временных файлов является, официально, > самым простым вариантом для этого. Кроме того, он ещё и
Что он создается до запуска, собственно команды и svn st отображает его в появление в выводе, как измнение. Вариант с созданием временного файла в более верхних каталогах вообще не рассматриваю, так как это в принципе не переносимо с тачки на тачку, но наверное мне придется либо заносить этот файл в игнор лист, либо создавать его с расширением, которое добавлено в глобальный игнор для svn-а.
> самый платформонезависимый, учитывая неожиданные флюктуации > происходящие с синтаксисом cmd в разных версиях винды. Сам > пользуюсь ими.
Ага, я его тоже сам нашел и пользовал, но мне он почему то казался а-ля "через %опу". Не знал, что на самом деле это и есть правильный способ.
Set tmpfile=%temp%\svntemp00119.09.06 14:58 Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman