информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Крупный взлом GoDaddy 
 Просроченный сертификат ломает... 
 Phrack #70/0x46 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / beginners
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
О. Именно то, что я искал 19.09.06 18:30  Число просмотров: 3197
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> for /F %%i "КлючевыеСловаРазбора" in ('command') do
> mycheck.bat %%i

Кто бы мог подумать, что искать стоит в for-е :-)
В общем на данный момент это уже неактуально, но в следующий раз буду иметь в виду.
<beginners>
[cmd.exe] Перенаправление стандартного вывода в переменную 19.09.06 03:47  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
Или я чего то не понимаю, или одно из двух

Хочу в 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 <Denis> Статус: The Elderman
Отредактировано 19.09.06 17:12  Количество правок: 1
<"чистая" ссылка>
for /F %%i "КлючевыеСловаРазбора" in ('command') do mycheck.bat %%i

Где:
command - программа, стандартный вывод которой нужно обработать.
mycheck.bat - скрипт (или метка в этом же cmd скрипте), который обрабатывает переданные через %1 и т.д. параметры.
Возможно придется повозиться с разделителями в выхлопе программы, для этого подробности смотри по ссылке в разделе "КлючевыеСловаРазбора".

MS support - cmd shell - for
О. Именно то, что я искал 19.09.06 18:30  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> for /F %%i "КлючевыеСловаРазбора" in ('command') do
> mycheck.bat %%i

Кто бы мог подумать, что искать стоит в for-е :-)
В общем на данный момент это уже неактуально, но в следующий раз буду иметь в виду.
[cmd.exe] увы :( 19.09.06 10:56  
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
<"чистая" ссылка>
> Что то мне подсказывает, что для второй команды в цепочке
> запускается отдельный shell и переменная изменяется в нем.
> После завершения цепочки этот шелл благополучно завершается
> вместе с установленной переменной.

Да, всё именно так и происходит. Даже обидно, что ты сам понял, я так люблю всё объяснять :(

> Создание временных файлов - не вариант. Может есть какой
> нибудь способ достичь желаемого?

AFAIK, создание временных файлов является, официально, самым простым вариантом для этого. Кроме того, он ещё и самый платформонезависимый, учитывая неожиданные флюктуации происходящие с синтаксисом cmd в разных версиях винды. Сам пользуюсь ими.
[cmd.exe] Прикол с временным файлом в том 19.09.06 13:55  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> AFAIK, создание временных файлов является, официально,
> самым простым вариантом для этого. Кроме того, он ещё и

Что он создается до запуска, собственно команды и svn st отображает его в появление в выводе, как измнение. Вариант с созданием временного файла в более верхних каталогах вообще не рассматриваю, так как это в принципе не переносимо с тачки на тачку, но наверное мне придется либо заносить этот файл в игнор лист, либо создавать его с расширением, которое добавлено в глобальный игнор для svn-а.

> самый платформонезависимый, учитывая неожиданные флюктуации
> происходящие с синтаксисом cmd в разных версиях винды. Сам
> пользуюсь ими.

Ага, я его тоже сам нашел и пользовал, но мне он почему то казался а-ля "через %опу". Не знал, что на самом деле это и есть правильный способ.
Set tmpfile=%temp%\svntemp001 19.09.06 14:58  
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
<"чистая" ссылка>
SET TMPFILE=%TEMP%\svntemp001

svn st >%TMPFILE%
О. Вариант. Правда я уже сделал по другому и закоммитил 19.09.06 18:16  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
1






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2021 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach