Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Содержимое консоли скопировать в файл (http://forum.oszone.net/showthread.php?t=334515)

dassen 25-04-2018 21:55 2810764

Содержимое консоли скопировать в файл
 
Некий пакетный файл заканчивает свою многочасовую работу командой шатдаун. Нужно чтобы до ее выполнения весь текст из окна консоли был скопирован (добавлен) в указанный .txt. Т.е. не нужно потоки вывода команд перенаправлять в .txt - пусть окно консоли заполняется как обычно, а в завершении его текст должен быть скопирован в .txt.

alpap 25-04-2018 22:23 2810770

Цитата:

Цитата dassen
Некий пакетный файл »

Цитата:

Цитата dassen
до ее выполнения »

Цитата:

Цитата dassen
потоки вывода команд »

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

dassen 26-04-2018 00:06 2810782

alpap,
Как раз команды перенаправлять в файл и не нужно.

Допустим, выполняется пакетный файл
Код:

@echo %time:~0,2%.%time:~3,2%.%time:~6,2%
7z a Fldr1.7z .\Fldr1\* -mx9 -mqs
@echo.
@echo %time:~0,2%.%time:~3,2%.%time:~6,2%
7z a Fldr2.7z .\Fldr2\* -mx9 -m0=LZMA2:d128m:fb273 -mqs
@echo.
@echo %time:~0,2%.%time:~3,2%.%time:~6,2%
7z a Fldr3.7z .\Fldr3\* -mx9 -m0=LZMA2:d128m:fb273 -mqs -myx
@echo.
:: здесь нужна желаемая команда
@shutdown -s -t 60
@pause


Перед командой shutdown в окне консоли успел отобразиться текст
23.16.15

E:\>7z a Fldr1.7z .\Fldr1\* -mx9 -mqs

7-Zip 18.03 beta (x86) : Copyright (c) 1999-2018 Igor Pavlov : 2018-03-04

Scanning the drive:
3 folders, 168 files, 18378039 bytes (18 MiB)

Creating archive: Fldr1.7z

Add new data to archive: 3 folders, 168 files, 18378039 bytes (18 MiB)


Files read from disk: 168
Archive size: 6711088 bytes (6554 KiB)
Everything is Ok

23.16.22

E:\>7z a Fldr2.7z .\Fldr2\* -mx9 -m0=LZMA2:d128m:fb273 -mqs

7-Zip 18.03 beta (x86) : Copyright (c) 1999-2018 Igor Pavlov : 2018-03-04

Scanning the drive:
3 folders, 168 files, 18378039 bytes (18 MiB)

Creating archive: Fldr2.7z

Add new data to archive: 3 folders, 168 files, 18378039 bytes (18 MiB)


Files read from disk: 168
Archive size: 6697529 bytes (6541 KiB)
Everything is Ok

23.16.30

E:\>7z a Fldr3.7z .\Fldr3\* -mx9 -m0=LZMA2:d128m:fb273 -mqs -myx

7-Zip 18.03 beta (x86) : Copyright (c) 1999-2018 Igor Pavlov : 2018-03-04

Scanning the drive:
3 folders, 168 files, 18378039 bytes (18 MiB)

Creating archive: Fldr3.7z

Add new data to archive: 3 folders, 168 files, 18378039 bytes (18 MiB)


Files read from disk: 168
Archive size: 6536707 bytes (6384 KiB)
Everything is Ok

Именно этот фрагмент (просто текст!) и хотелось бы скопировать в .txt.

Iska 26-04-2018 01:05 2810785

dassen, идёте на GnuWin32, устанавливаете и пользуете из этого комплекта утилиту tee.exe в виде:
Код:

@echo off

set sOutputFile=C:\Мои проекты\0152\Result.txt

echo %time:~0,2%.%time:~3,2%.%time:~6,2%|tee.exe --append "%sOutputFile%"
7z a Fldr1.7z .\Fldr1\* -mx9 -mqs|tee.exe --append "%sOutputFile%"
echo.|tee.exe --append "%sOutputFile%"


dassen 26-04-2018 06:22 2810799

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

Достаточно сравнить результирующие текстовые файлы
В более компактном представлении имеем:
Код:

(
@echo %time:~0,2%.%time:~3,2%.%time:~6,2%
7z a Fldr1.7z .\Fldr1\* -mx9 -mqs
@echo.
@echo %time:~0,2%.%time:~3,2%.%time:~6,2%
7z a Fldr2.7z .\Fldr2\* -mx9 -m0=LZMA2:d128m:fb273 -mqs
@echo.
@echo %time:~0,2%.%time:~3,2%.%time:~6,2%
7z a Fldr3.7z .\Fldr3\* -mx9 -m0=LZMA2:d128m:fb273 -mqs -myx
@echo.
)|tee -a tee.txt

Код:

(
@echo %time:~0,2%.%time:~3,2%.%time:~6,2%
7z a Fldr1.7z .\Fldr1\* -mx9 -mqs
@echo.
@echo %time:~0,2%.%time:~3,2%.%time:~6,2%
7z a Fldr2.7z .\Fldr2\* -mx9 -m0=LZMA2:d128m:fb273 -mqs
@echo.
@echo %time:~0,2%.%time:~3,2%.%time:~6,2%
7z a Fldr3.7z .\Fldr3\* -mx9 -m0=LZMA2:d128m:fb273 -mqs -myx
@echo.
)>redirection.txt

tee.txt и redirection.txt будут идентичны.


А хотелось бы
Цитата:

Цитата dassen
Именно этот фрагмент (просто текст!) и хотелось бы скопировать в .txt. »


Iska 26-04-2018 08:01 2810808

Цитата:

Цитата dassen
Iska, это то же самое, что и запись данных на выходе команды вместо окна консоли в файл, с той лишь разницей, что соответствующая запись появляется также и в окне консоли. »

Именно так. И это решает поставленную задачу. Целиком и полностью. Специально предназначенной для того утилитой.

Цитата:

Цитата dassen
А хотелось бы »

Чисто технически это возможно. Если текст не вышел за пределы буфера экрана (именно буфера, а не окна). Но зачем? Я бы ещё понял, если б Вам требовалось приручить некую утилиту, которая напрямую пишет в окно, а не использует стандартные потоки вывода и ошибок. Но в данном случае необходимости в таких извращениях я совсем не вижу.

Busla 26-04-2018 10:48 2810835

Цитата:

Цитата dassen
Перед командой shutdown в окне консоли успел отобразиться текст
Именно этот фрагмент (просто текст!) и хотелось бы скопировать в .txt. »

у этого "перед" должно быть начало, можете однозначно сформулировать?

dassen 26-04-2018 21:31 2810959

Iska, спасибо. Согласен. Уже использую.
Busla, формулирую: весь текст из окна консоли от первой строки до команды shutdown.
Цитата:

Цитата dassen
Перед командой shutdown в окне консоли успел отобразиться текст »


Patroklos 01-05-2018 11:33 2811539

Цитата:

Цитата Iska
идёте на GnuWin32, устанавливаете и пользуете из этого комплекта утилиту tee.exe »

Искал даже поиском по странице. Всё есть, а tee нет.

alpap 01-05-2018 12:06 2811547

напрямую:
Файл 152342

Iska 01-05-2018 12:23 2811557

Patroklos, ууу… Вот Вам прямая ссылка на загрузку потребного пакета: CoreUtils for Windows 5.3.0 Setup.

Busla 01-05-2018 13:10 2811565

Ребята, вас куда-то не туда понесло. В linux tee пользуются потому что она там уже есть. Для Windows быстрее самому написать tee.bat:
Код:

echo off
FOR /F "tokens=1* delims=]" %%A IN ('FIND /N /V ""') DO (
    >  CON    ECHO.%%B
    >> %1 ECHO.%%B
)


Patroklos 01-05-2018 14:45 2811578

Цитата:

Цитата alpap
напрямую:
tee.7z »

Спасибо!
Цитата:

Цитата Iska
ууу… Вот Вам прямая ссылка на загрузку потребного пакета: »

Спасибо!

dassen 13-05-2018 18:48 2813531

Busla, а как, используя Ваш код, изменить, например, это
Код:

(
@echo %time:~0,2%.%time:~3,2%.%time:~6,2%
7z a Fldr1.7z .\Fldr1\* -mx -mqs
@echo.
@echo %time:~0,2%.%time:~3,2%.%time:~6,2%
7z a Fldr2.7z .\Fldr2\* -mx -m0=LZMA2:d128m:fb273 -mqs -myx
@echo.
)|tee -a result.txt

, чтобы, не используя tee.exe, получить аналогичный результат (вывод и в окно консоли, и в result.txt) ?

Опиум 14-05-2018 09:02 2813597

dassen, привет, делал(писал) подобное 100 лет назад (под WinNT4.0/2000) Когда была старая корпоративная программа, которая могла останавливаться с ошибкой (программа в стиле Нортона). Моя утилита считывала консольный экран, чтобы понять, причину останова. Вот такой "колхоз". Так что теоретически в интернете есть подобные утилиты, но выше, камрады дают более дельные советы.

Busla 14-05-2018 11:39 2813609

dassen, проще всего - скопипастить приведённый мной код в tee.bat, а в вашем убрать ключ -a

Опиум 14-05-2018 12:18 2813618

вот тут бодяжат. http://www.delphisources.ru/forum/showthread.php?t=7520
Можно компильнуть.

Iska 14-05-2018 12:24 2813621

Опиум, если б они они ещё бодяжили бы правильным образом :).

Опиум 14-05-2018 12:39 2813624

Iska, ну я не вчитывался, но помню, что делал аналогичное и все работало как мне надо. Но в моём случае было не перенаправление ввода, а считывание "а-ля нортоновских" окон из псевдографики


Время: 00:38.

Время: 00:38.
© OSzone.net 2001-