PDA

Показать полную графическую версию : [решено] Содержимое консоли скопировать в файл


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

alpap
25-04-2018, 22:23
Некий пакетный файл »
до ее выполнения »
потоки вывода команд »
вы не задумывались что мы должны видеть то с чем надо работать и чьи команды перенаправлять в файл.

dassen
26-04-2018, 00:06
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
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
dassen, идёте на GnuWin32 (http://gnuwin32.sourceforge.net/), устанавливаете и пользуете из этого комплекта утилиту 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
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 будут идентичны.

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

Iska
26-04-2018, 08:01
Iska, это то же самое, что и запись данных на выходе команды вместо окна консоли в файл, с той лишь разницей, что соответствующая запись появляется также и в окне консоли. »
Именно так. И это решает поставленную задачу. Целиком и полностью. Специально предназначенной для того утилитой.

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

Busla
26-04-2018, 10:48
Перед командой shutdown в окне консоли успел отобразиться текст
Именно этот фрагмент (просто текст!) и хотелось бы скопировать в .txt. »
у этого "перед" должно быть начало, можете однозначно сформулировать?

dassen
26-04-2018, 21:31
Iska, спасибо. Согласен. Уже использую.
Busla, формулирую: весь текст из окна консоли от первой строки до команды shutdown.Перед командой shutdown в окне консоли успел отобразиться текст »

Patroklos
01-05-2018, 11:33
идёте на GnuWin32, устанавливаете и пользуете из этого комплекта утилиту tee.exe »
Искал даже поиском по странице. Всё есть, а tee нет.

alpap
01-05-2018, 12:06
напрямую:
152342

Iska
01-05-2018, 12:23
Patroklos, ууу… Вот Вам прямая ссылка на загрузку потребного пакета: CoreUtils for Windows 5.3.0 Setup (http://gnuwin32.sourceforge.net/downlinks/coreutils.php).

Busla
01-05-2018, 13:10
Ребята, вас куда-то не туда понесло. В 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
напрямую:
tee.7z »

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

Спасибо!

dassen
13-05-2018, 18:48
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
dassen, привет, делал(писал) подобное 100 лет назад (под WinNT4.0/2000) Когда была старая корпоративная программа, которая могла останавливаться с ошибкой (программа в стиле Нортона). Моя утилита считывала консольный экран, чтобы понять, причину останова. Вот такой "колхоз". Так что теоретически в интернете есть подобные утилиты, но выше, камрады дают более дельные советы.

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

Опиум
14-05-2018, 12:18
вот тут бодяжат. http://www.delphisources.ru/forum/showthread.php?t=7520
Можно компильнуть.

Iska
14-05-2018, 12:24
Опиум, если б они они ещё бодяжили бы правильным образом :).

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




© OSzone.net 2001-2012