Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вывести в лог большой cmd с экрана

Ответить
Настройки темы
CMD/BAT - [решено] Вывести в лог большой cmd с экрана

Старожил


Сообщения: 162
Благодарности: 26

Профиль | Отправить PM | Цитировать


Изменения
Автор: Shulzzz
Дата: 05-11-2019
Имеется скрипт в cmd, который обрабатывает последовательность команд, нужно результат его работы видеть на экране и одновременно записывать это все в лог,
способ сначала записать в лог >d:\log.txt, а потом его просмотреть type d:\log.txt не подходит, нужно в реале наблюдать что происходит, а потом еще иметь возможность посмотреть нормальный лог, как на экране, а не те непонятные куски, что записывает выше указанная команда, уже все интернеты облазил ничего внятного кроме огромных непонятных простыней не нашел, не смотря на то что этот вопрос поднимался давным давно и не раз.

Отправлено: 15:10, 05-11-2019

 

Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата Shulzzz:
Имеется скрипт в cmd »
Цитата Shulzzz:
посмотреть нормальный лог, как на экране, а не те непонятные куски »
мил человек, да чтобы вам помочь, код-то показать просто придется, а еще и вероятно внутренности лога, а еще и пояснить насчет просмотра выполнения в реальном времени, потому как некоторые команды отрабатывают очень быстро и "бесшумно" и вероятно придется добавлять задержку и доп. команды.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:58, 05-11-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Старожил


Сообщения: 162
Благодарности: 26

Профиль | Отправить PM | Цитировать


alpap, Приветствую, циферки с датами я сам раставлю где нужно, код думаю врятли Вам о чем нибудь скажет, эксперементирую с созданием сборок в автоматическом режиме, часто вношу изменения в скрипт, проверяю что будет, вообщем было бы очень удобно если бы все писалось не только на экране но и в лог, говорят в линухе это легко реализуется всего одной командой, неужели в cmd или на худой конец в PowerShell не придумано ничего похожего?

Скрытый текст
chcp 1251
rem Отключаем антивирь
Powershell -File "%~dp0ps\10\off.ps1"

echo %date% %time:~-11,8%
rem Создаем папку для будуещего wim файла, который будем изменять
rd /s /q %~dp0OS\64\
md %~dp0OS\64\Orig\

rem Копируем оригинальный wim во вновь созданую папку
copy E:\cd-roms\OS\cur\64\install.wim %~dp0OS\64\orig\

rem Создаем папку для монтирования
md %~dp0mount

echo %date% %time:~-11,8%
rem Монтируем оргинал для изменения в Dism++ и NtLite
Dism /Mount-Wim /WimFile:%~dp0OS\64\orig\install.wim /index:1 /MountDir:%~dp0mount

echo %date% %time:~-11,8%
rem Насилуем оригинальный образ в дисм
start /wait %~dp0Install\Dism\Dism++x64.exe

echo %date% %time:~-11,8%
rem Добавляем в автозагрузку скрипт для начала установки софта и настроек после выхода на раб стол
reg load HKLM\start %~dp0mount\users\Default\NTUSER.DAT
reg add HKEY_LOCAL_MACHINE\start\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "Start" /d "d:\w10Home.cmd" /f
reg unload HKLM\start

rem Добавляем ассоциации файлам
Dism.exe /Image:%~dp0mount /Import-DefaultAppAssociations:%~dp0Install\fileassoc.xml

echo %date% %time:~-11,8%
rem Насилуем оригинальный образ в NtLite
"C:\Program Files\NTLite\NTLite.exe" /loadimage:"%~dp0OS\64\orig\install.wim" /imageindex:1 /loadpreset:"win10" /exitAfter:1
md %~dp0mount

echo %date% %time:~-11,8%
rem Сохраняем изменения в рар на всякий случай
"C:\program files\winrar\rar.exe" a "%~dp0imageVB\aftrNt64.rar" "%~dp0OS\64\orig\Install.wim"
copy %~dp0imageVB\aftrNt64.rar E:\cd-roms\OS\cur

echo %date% %time:~-11,8%
rem Очищаем папку виртуальной машины
rd /s /q %~dp0vb\10x64

rem Распаковываем пердварительно подготовленную папку с чистой виртуальной машиной для работы с ней
"c:\program files\winrar\rar.exe" x %~dp0vb\10x64.rar %~dp0vb\

rem Переназначаем букву дискам, что бы нужному была присвоена буква G:
ReMount F: W:
ReMount G: Y:

rem Монтируем чистый виртуальный носитель на хост
vmount attach %~dp0vb\10x64\10x64.vhd

echo %date% %time:~-11,8%
rem Применяем к нему измененый в дисм++ и нтлайт образ
dism /Apply-Image /Imagefile:%~dp0Install\boot.wim /index:1 /ApplyDir:F:\
dism /Apply-Image /Imagefile:%~dp0OS\64\orig\install.wim /index:1 /ApplyDir:G:\

rem Добавляем файл ответов, чтобы сразу перейти в режим аудита после развертывания и начать установку софта
md G:\Windows\Panther\
copy %~dp0Install\Unattend\pe\Unattend.xml G:\Windows\Panther\

rem Демонтируем виртуальный носитель с образом
vmount detach %~dp0vb\10x64\10x64.vhd

rem Переносим cd с софтом и настройками в рабочую папку
move %~dp0cd-roms\10\HOME\Windows10.iso %~dp0cd-roms\

rem Закрываем окно менеджера VB чтобы не сбились настройки сохраненных виртуальных машин
TASKKILL /IM VirtualBox.exe

echo %date% %time:~-11,8%
rem Первый раз запускаем виртуальную машину и дожидаемся установки софта и настроек
"c:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -s 10x64 -v on

rem Переносим cd с софтом обратно в хранилище
move %~dp0cd-roms\Windows10.iso %~dp0cd-roms\10\HOME\

echo %date% %time:~-11,8%
rem Сохраняем хомку без обновлений и сиспреп в rar для последующей доустановки Office, обновлений и т.п.
del "%~dp0imageVB\10x64Homewim.rar"
"C:\program files\winrar\rar.exe" a "%~dp0imageVB\10x64Homewim.rar" "%~dp0vb\10x64"


rem Переносим cd с апдэйтами в рабочую папку
move %~dp0cd-roms\10\UPD\Windows10.iso %~dp0cd-roms\

rem Закрываем окно менеджера VB чтобы не сбились настройки сохраненных виртуальных машин
TASKKILL /IM VirtualBox.exe

echo %date% %time:~-11,8%
rem Запускаем настроеную вирутальную машину с Home для обновления
"c:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -s 10x64 -v on

rem Переносим cd с апдэйтами обратно в хранилище
move %~dp0cd-roms\Windows10.iso %~dp0cd-roms\10\UPD\

echo %date% %time:~-11,8%
rem Переназначаем букву дискам, что бы нужному была присвоена буква G:
ReMount F: W:
ReMount G: Y:

rem Присоединяем виртуальный диск
vmount attach %~dp0vb\10x64\10x64.vhd

rem Создаем папку для будущего wim файла, с настроенной Home
md %~dp0OS\64\Home\

echo %date% %time:~-11,8%
rem Заливаем в wim настроенную Home
Dism /Capture-Image /ImageFile:%~dp0OS\64\Home\install.wim /CaptureDir:G:\ /Name:"Windows 10 Home x64" /Description:"Windows 10 Home x64"

rem Отсоединяем виртуальный диск
vmount detach %~dp0vb\10x64\10x64.vhd

rem создаем папку для монтирования (на всякий случай)
md %~dp0mount

echo %date% %time:~-11,8%
rem Запускаем повышение редакции до Pro
DISM /Export-Image /SourceImageFile:%~dp0OS\64\Home\install.wim /SourceIndex:1 /DestinationImageFile:%~dp0OS\64\Home\install.wim /DestinationName:"Windows 10 Pro x64"
DISM /Mount-Image /ImageFile:%~dp0OS\64\Home\install.wim /Index:2 /MountDir:%~dp0mount
DISM /Image:%~dp0mount /Set-Edition:Professional
Dism /Unmount-Wim /MountDir:%~dp0mount /Commit

echo %date% %time:~-11,8%
rem Готов образ с двумя редакциями для установки на работу в офис, нет ниодной не лицензионной программы

rem Дальше

rem Отключаем антивирь
Powershell -File "%~dp0ps\10\off.ps1"

echo %date% %time:~-11,8%
rem Распаковываем Vb с настроенным Home из рар обратно
rd /s /q %~dp0vb\10x64
"c:\program files\winrar\rar.exe" x "%~dp0imageVB\10x64Homewim.rar" %~d0\

rem Переносим cd с Office в рабочую папку
move %~dp0cd-roms\10\OFFICE\Windows10.iso %~dp0cd-roms\

rem Закрываем окно менеджера VB чтобы не сбились настройки сохраненных виртуальных машин
TASKKILL /IM VirtualBox.exe

echo %date% %time:~-11,8%
rem Запускаем vb доустанавливаем офис и т.п.
"c:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -s 10x64 -v on

rem Переносим cd с Office в хранилище
move %~dp0cd-roms\Windows10.iso %~dp0cd-roms\10\OFFICE\

echo %date% %time:~-11,8%
rem Сохраняем в рар Home&Office для последующего обновления сборки
del "%~dp0imageVB\10x64Office.rar"
"C:\program files\winrar\rar.exe" a "%~dp0imageVB\10x64Officewim.rar" "%~dp0vb\10x64"

rem Переносим cd с апдэйтами в рабочую папку
move %~dp0cd-roms\10\UPD\Windows10.iso %~dp0cd-roms\

rem Закрываем окно менеджера VB чтобы не сбились настройки сохраненных виртуальных машин
TASKKILL /IM VirtualBox.exe

echo %date% %time:~-11,8%
rem запускаем Home_Office, обновляем, сиспрепим
"c:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -s 10x64 -v on

rem Переносим cd с апдэйтами в хранилище
move %~dp0cd-roms\Windows10.iso %~dp0cd-roms\10\UPD\

rem Переназначаем букву дискам, что бы нужному была присвоена буква G:
ReMount F: W:
ReMount G: Y:

rem Присоединяем виртуальный диск
vmount attach %~dp0vb\10x64\10x64.vhd

rem Создаем папку для будущего wim файла, с настроенной Home_Office
md %~dp0OS\64\Home_Office\

echo %date% %time:~-11,8%
rem Заливаем в wim настроенную Home_Office
Dism /Capture-Image /ImageFile:%~dp0OS\64\Home_Office\install.wim /CaptureDir:G:\ /Name:"Windows 10 Home_Office x64" /Description:"Windows 10 Home_Office x64"

rem Отсоединяем виртуальный диск
vmount detach %~dp0vb\10x64\10x64.vhd

rem создаем папку для монтирования (на всякий случай)
md %~dp0mount

echo %date% %time:~-11,8%
rem Запускаем повышение редакции до Pro_Office
DISM /Export-Image /SourceImageFile:%~dp0OS\64\Home_Office\install.wim /SourceIndex:1 /DestinationImageFile:%~dp0OS\64\Home_Office\install.wim /DestinationName:"Windows 10 Pro_Office x64"
DISM /Mount-Image /ImageFile:%~dp0OS\64\Home_Office\install.wim /Index:2 /MountDir:%~dp0mount
DISM /Image:%~dp0mount /Set-Edition:Professional
Dism /Unmount-Wim /MountDir:%~dp0mount /Commit

echo %date% %time:~-11,8%
rem Добавляем 3,4 редакции без Office
Dism /Export-Image /DestinationName:"Windows 10 Home x64" /SourceImageFile:"d:\ForCreate\OS\64\Home\install.wim" /SourceIndex:1 /DestinationImageFile:"d:\ForCreate\OS\64\Home_Office\install.wim"

Dism /Export-Image /DestinationName:"Windows 10 Pro x64" /SourceImageFile:"d:\ForCreate\OS\64\Home\install.wim" /SourceIndex:2 /DestinationImageFile:"d:\ForCreate\OS\64\Home_Office\install.wim"

Последний раз редактировалось Shulzzz, 05-11-2019 в 19:34.


Отправлено: 19:27, 05-11-2019 | #3


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


ну вот смотрите. я начну а вы продолжайте
например:
Цитата Shulzzz:
rd /s /q ...»
в лог запись будет только при ошибке
Цитата Shulzzz:
md ...»
никакого отображения не будет

можно к примеру каждую команду дублировать:
Код: Выделить весь код
>>log.txt rd /s /q ...
rd /s /q ...
>>log.txt md ...
md ...
но для полноценности действий придется делать проверку:
Код: Выделить весь код
if not exist Folder echo Действительна удалена
if exist %~dp0OS\64\Orig\... echo Действительно создана
тут уж хозяин-барин что надо в логе (до какой степени) или как должно выглядеть.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:05, 05-11-2019 | #4


Старожил


Сообщения: 162
Благодарности: 26

Профиль | Отправить PM | Цитировать


alpap, Благодарю за быстрое реагирование, хотелось бы что бы выглядело как на экране в окне cmd, там же все отображается как надо, почему нельзя сделать такой же лог, ну или не лог, а просто запись cmd экрана в текстовый файл, меня бы вполне устроило

Отправлено: 21:54, 05-11-2019 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Shulzzz:
хотелось бы что бы выглядело как на экране в окне cmd, там же все отображается как надо, »
Shulzzz, так Вам коллега alpap и пишет, что для приведённых им в примере команд на экране ничего не будет при их корректном исполнении.

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

Вы можете использовать tee.exe из комплекта GnuWin32 (например, отсюда: CoreUtils for Windows). Кроме того, говорят, что аналог tee.exe с какого-то момента включён в комплект Windows 10 (не знаю, не проверял).
Цитата:
Код: Выделить весь код
C:\Program Files (x86)\GnuWin32\bin>tee.exe --help
Использование: C:\Program Files (x86)\GnuWin32\bin\tee.exe [КЛЮЧ]... [ФАЙЛ]...
Копирует стандартный ввод в каждый ФАЙЛ, а также в стандартный вывод.

  -a, --append              дописать в заданные ФАЙЛЫ
  -i, --ignore-interrupts   игнорировать сигналы прерывания
      --help     показать эту справку и выйти
      --version  показать информацию о версии и выйти


If a FILE is -, copy again to standard output.

Об ошибках сообщайте по адресу <bug-coreutils@gnu.org>.
То есть, Вы можете перенаправить вывод стандартного потока вывода на вход стандартного потока ввода утилиты tee.exe, которая запишет принятое содержимое в заданный файл/файлы (это и будет Ваш лог) и в свой стандартный поток вывода (это будет Ваш экран). Например:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sLog=C:\Мои проекты\0283\Log.txt
set sOutByTee="%ProgramFiles(x86)%\GnuWin32\bin\tee.exe" --append "%sLog%"

>nul copy nul "%sLog%"
>nul chcp 1251

echo Hello World|%sOutByTee%
copy "*.*" nul|%sOutByTee%
reg.exe query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"|%sOutByTee%

>nul chcp 866

endlocal
exit /b 0
Результаты исполнения



и т.п.
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:38, 05-11-2019 | #6


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


Shulzzz, можно в PoSh сделать
Код: Выделить весь код
Start-Transcript -Path имя_файла
запустить cmd с вашим батником, а после выполнить
Код: Выделить весь код
Stop-Transcript
в файле будет дамп консоли
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:52, 05-11-2019 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Busla:
можно в PoSh сделать »
Это как бы не лучшим вариантом из возможных оказалось, потому как и stdout перехватывает, и stderr.

Отправлено: 23:04, 05-11-2019 | #8


Аватара для Charg

Ветеран


Сообщения: 2798
Благодарности: 469

Профиль | Отправить PM | Цитировать


Iska, почему? ему же лог нужен, а не success-story.

Блин а что это за колхоз в батнике? MDT разверни и настраивай сборку. Там тебе и логи полноценные и возможностей больше.

Отправлено: 00:38, 06-11-2019 | #9


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Charg:
ему же лог нужен, »
Неа. По факту ему нужно:
Цитата Shulzzz:
хотелось бы что бы выглядело как на экране в окне cmd, там же все отображается как надо, »
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:55, 06-11-2019 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вывести в лог большой cmd с экрана

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - CMD - читаю из файла, если первый символ строки =*, то вывести на экран строку jester7 Скриптовые языки администрирования Windows 16 11-04-2022 13:52
[Решено] Открыть большой лог: windows zod1 Хочу все знать 8 28-08-2017 19:43
CMD/BAT - Как сделать скриншот экрана через cmd или bat? bobojonkholikov Скриптовые языки администрирования Windows 11 12-07-2015 02:33
CMD/BAT - CMD проблемы с кодировкой лог файла Proflex Скриптовые языки администрирования Windows 4 06-01-2012 13:17
CMD/BAT - [решено] Как вывести в лог значения из arp -a root221 Скриптовые языки администрирования Windows 31 21-07-2011 03:42




 
Переход