Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Перенаправление вывода консоли в файл  (Прочитано 19938 раз)
0 Пользователей и 1 Гость смотрят эту тему.
_serj_dev
Участник

ru
Offline Offline

« : 29-05-2009 05:08 » 

Приветствую Вас форумчане.
Подскажите пожалуйста как мне перенаправить вывод в файл команды CScript даже если команда будет выполнена с ошибкой. Дело в том что когда я запускаю java скрипт(*.js) нужно чтобы все ошибки и сообщения перенаправлялись в файл.
Код:
CScript.exe my.js >> file.log
При выполнении данной команды происходит следующее:
1. В файл выводится сведения программы(по умолчанию они включены).
2. При возникновении ошибки в скрипте вывод ошибки присходит уже в стандартный вывод.

Задача заключается в том, чтобы запустить одной командой и не писать bat-ник, так как в скрипт должны быть переданы параметры с другой программы.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 29-05-2009 06:13 » 

а шо уже в батник передать параметры религия не позволяет?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
_serj_dev
Участник

ru
Offline Offline

« Ответ #2 : 29-05-2009 06:23 » 

Sla: Уже догадался. Вот как раз и ищу как это сделать. Не подскажешь?
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 29-05-2009 07:00 » 

смотри в сторону %1 %2  и т.д, к сожалению так можно напрямую обратиться только к девяти (или к десяти - не помню) параметрам
но! если организовать цикл по входным параметрам, то можно и ко всем
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
_serj_dev
Участник

ru
Offline Offline

« Ответ #4 : 29-05-2009 07:47 » 

Sla, большое тебе спасибо!
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 29-05-2009 11:25 » new

В винде есть встроенный хелп по командам:

HELP - выводит список команд и краткое описание.
HELP команда - подробное описание команды

Думаю, что эта информация пригодится. В описаниях встречаются примеры.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 29-05-2009 11:38 » 

RXL, там не хелп нужен был
нужно было передать параметры в батник а этого в хелпе нужно искать с фонарем
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 29-05-2009 11:43 » 

Sla, я понял. Просто помню свои муки по написанию батников и считаю, что стоит поделиться чем есть.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
_serj_dev
Участник

ru
Offline Offline

« Ответ #8 : 01-06-2009 02:25 » 

Что то даже через батник не получилось заполучить вывод целиком.
Пишу вот такой файл:
Код:
@echo off
set OUTPUT=file.log

if "%STDOUT_REDIRECTED%" == "" (
    set STDOUT_REDIRECTED=yes
    cmd.exe /c %0 %* >>%OUTPUT%
    exit /b %ERRORLEVEL%
)
cscript my.js

@echo on
Тоже самое получается что и в первый раз, когда я запускал через командную строку. CScript выдает ошибку в стандартный вывод.
Записан
Chaa
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 01-06-2009 04:22 » 

У консольной программы есть три стандартных потока: STDIN (номер 0), STDOUT (1), STDERR (2). Соответсвенно ошибки выводятся не в STDOUT, а в STDERR.
Для того, чтобы ошибки выводились в STDOUT, нужно написать в командной строке 2>&1, т.е. перенаправить поток 2 (STDERR) в поток 1 (STDOUT).
Код:
if "%STDOUT_REDIRECTED%" == "" (
    set STDOUT_REDIRECTED=yes
    cmd.exe /c %0 %* >>%OUTPUT% 2>&1
    exit /b %ERRORLEVEL%
)
Записан
_serj_dev
Участник

ru
Offline Offline

« Ответ #10 : 01-06-2009 05:09 » 

Chaa, скажи пожалуйста как перенаправить только вывод ошибок? Мне нужно писать логи.
Записан
Chaa
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 01-06-2009 05:20 » 

Вывод потока STDERR в файл, а STDOUT на экран:
Код:
cscript.exe my.js 2>>stderr.log
Вывод потока STDERR в файл, и STDOUT в другой файл:
Код:
cscript.exe my.js >>stdout.log 2>>stderr.log
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines