Перейти к содержимому

Фотография

Автоматизация инсталляции с помощью cmd


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 9

#1 GipsySh

GipsySh

    Новый участник

  • Members
  • Pip
  • 17 сообщений

Отправлено 06 апреля 2010 - 05:15

Проблема с первого взгляда кажется банальной, но тем не менее, у меня не получается вывести результаты с экрана в файл.

Есть exe-шник (используемый для инсталляции приложения), который запускается с параметром. В результате выполнения этой команды на экран выводится результат выполнения (в виде 3 строк).

Я пытаюсь вывести результаты выполнения этой команды в файл обычным перенаправлением вывода. Пишу скрипт:
cd %systemdrive%\
"my.exe" /param >> C:\test.txt 2<&1
pause
(в my.exe в кавычках указан абсолютный путь к exe-шнику)

В результате файл test.txt создается, но никакие данные в него не записываются :(
Для обычных cmd-команд, описанных в help'е (например, xcopy, more и проч.) это перенаправление работает...
Не сталкивался ли кто-нибудь с подобной проблемой?
  • 0

#2 DrVal

DrVal

    Постоянный участник

  • Members
  • PipPipPip
  • 230 сообщений
  • ФИО:Drozdov V. V.

Отправлено 06 апреля 2010 - 05:37

Могу предположить только одно - .exe не пишет в stdout, поэтому и не перенаправляется.

В результате файл test.txt создается, но никакие данные в него записываются :(
Для обычных cmd-команд, описанных в help'е (например, xcopy, more и проч.) это перенаправление работает...
Не сталкивался ли кто-нибудь с подобной проблемой?


  • 0

#3 Pryanik

Pryanik

    Постоянный участник

  • Members
  • PipPipPip
  • 214 сообщений
  • Город:МОСКВА

Отправлено 06 апреля 2010 - 07:02

Проблема с первого взгляда кажется банальной, но тем не менее, у меня не получается вывести результаты с экрана в файл.

Есть exe-шник (используемый для инсталляции приложения), который запускается с параметром. В результате выполнения этой команды на экран выводится результат выполнения (в виде 3 строк).

Я пытаюсь вывести результаты выполнения этой команды в файл обычным перенаправлением вывода. Пишу скрипт:

cd %systemdrive%\
"my.exe" /param >> C:\test.txt 2<&1
pause
(в my.exe в кавычках указан абсолютный путь к exe-шнику)

В результате файл test.txt создается, но никакие данные в него не записываются :(
Для обычных cmd-команд, описанных в help'е (например, xcopy, more и проч.) это перенаправление работает...
Не сталкивался ли кто-нибудь с подобной проблемой?

Для перенаправления вывода команд из окна командной строки в файл надо применять оператор «>».
У вас же используется оператор «<».
  • 0

#4 DrVal

DrVal

    Постоянный участник

  • Members
  • PipPipPip
  • 230 сообщений
  • ФИО:Drozdov V. V.

Отправлено 06 апреля 2010 - 13:53

И в самом деле, должно быть 2>&1
в файл оно аппендит правильно (>>)

Для перенаправления вывода команд из окна командной строки в файл надо применять оператор «>».
У вас же используется оператор «<».


  • 0

#5 GipsySh

GipsySh

    Новый участник

  • Members
  • Pip
  • 17 сообщений

Отправлено 06 апреля 2010 - 15:35

Прошу прощения, опечаталась. Да, должно быть так:
cd %systemdrive%\
"my.exe" /param >> C:\test.txt 2>&1
pause

Могу предположить только одно - .exe не пишет в stdout, поэтому и не перенаправляется.

После выполнения exe-шника на экран (в консольное окно) выводится результат выполенения команды. А экран - это как раз stdout (дескриптор с номером 1). Т.е., получается, exe-шник пишет в stdout. DrVal, я что-то неправильно понимаю или Вы имеете ввиду что-то другое?
  • 0

#6 vass

vass

    Опытный участник

  • Members
  • PipPipPipPip
  • 298 сообщений
  • ФИО:Василий

Отправлено 07 апреля 2010 - 09:26

нет, экран - это не только STDOUT, но еще и STDERR и STDLOG (и еще не помню что)
попробуйте еще вот
cd %systemdrive%\
"my.exe" /param 2>&1 3>&1  >> C:\test.txt
pause
во вторых - а что пишет ? может у вас там ошибка в "cd %systemdrive%\" или до них ?
  • 0

#7 GipsySh

GipsySh

    Новый участник

  • Members
  • Pip
  • 17 сообщений

Отправлено 07 апреля 2010 - 12:38

нет, экран - это не только STDOUT, но еще и STDERR и STDLOG (и еще не помню что)
попробуйте еще вот

cd %systemdrive%\
"my.exe" /param 2>&1 3>&1  >> C:\test.txt
pause
во вторых - а что пишет ? может у вас там ошибка в "cd %systemdrive%\" или до них ?


Результат тот же - в файл не пишет :(
В скрипте, который запускаю, написаны только эти три строчки, т.е. до них не может быть ошибок...
Если создать файл input.txt и ввести в него какие-то данные, то после выполнения вот такой последовательности команд:
cd %systemdrive%\
"my.exe" /param 2>&1 3>&1  >> C:\test.txt
more C:\input.txt 2>&1 3>&1  >> C:\test.txt
pause
в файл test.txt будут записаны данные из input.txt. И всё - для первой команды результат выведется только в окно командной строки :(
  • 0

#8 Pryanik

Pryanik

    Постоянный участник

  • Members
  • PipPipPip
  • 214 сообщений
  • Город:МОСКВА

Отправлено 07 апреля 2010 - 13:29

Есть мысль: приложение может использовать используется дескриптор отличный от 0-2, в этом случае вам стоит, если это возможно, у разработчиков какой дескриптор используеся.
  • 0

#9 GipsySh

GipsySh

    Новый участник

  • Members
  • Pip
  • 17 сообщений

Отправлено 07 апреля 2010 - 13:47

В принципе, такая возможность есть, но я попробовала уже проверить для дескрипторов с номерами от 3 до 9 (включительно) и итог везде получился одинаковый :(
  • 0

#10 DrVal

DrVal

    Постоянный участник

  • Members
  • PipPipPip
  • 230 сообщений
  • ФИО:Drozdov V. V.

Отправлено 07 апреля 2010 - 14:06

Можно еще посмотреть, какие функции оно зовет для печати на экран.


В принципе, такая возможность есть, но я попробовала уже проверить для дескрипторов с номерами от 3 до 9 (включительно) и итог везде получился одинаковый :(


  • 0


Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных