Показать полную графическую версию : [решено] Вывести в лог большой cmd с экрана
Имеется скрипт в cmd, который обрабатывает последовательность команд, нужно результат его работы видеть на экране и одновременно записывать это все в лог,
способ сначала записать в лог >d:\log.txt, а потом его просмотреть type d:\log.txt не подходит, нужно в реале наблюдать что происходит, а потом еще иметь возможность посмотреть нормальный лог, как на экране, а не те непонятные куски, что записывает выше указанная команда, уже все интернеты облазил ничего внятного кроме огромных непонятных простыней не нашел, не смотря на то что этот вопрос поднимался давным давно и не раз.
Имеется скрипт в cmd »
посмотреть нормальный лог, как на экране, а не те непонятные куски »
мил человек, да чтобы вам помочь, код-то показать просто придется, а еще и вероятно внутренности лога, а еще и пояснить насчет просмотра выполнения в реальном времени, потому как некоторые команды отрабатывают очень быстро и "бесшумно" и вероятно придется добавлять задержку и доп. команды.
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"
ну вот смотрите. я начну а вы продолжайте
например:
rd /s /q ...»
в лог запись будет только при ошибке
md ...»
никакого отображения не будет
можно к примеру каждую команду дублировать:
>>log.txt rd /s /q ...
rd /s /q ...
>>log.txt md ...
md ...
но для полноценности действий придется делать проверку:
if not exist Folder echo Действительна удалена
if exist %~dp0OS\64\Orig\... echo Действительно создана
тут уж хозяин-барин что надо в логе (до какой степени) или как должно выглядеть.
alpap, Благодарю за быстрое реагирование, хотелось бы что бы выглядело как на экране в окне cmd, там же все отображается как надо, почему нельзя сделать такой же лог, ну или не лог, а просто запись cmd экрана в текстовый файл, меня бы вполне устроило
хотелось бы что бы выглядело как на экране в окне cmd, там же все отображается как надо, »
Shulzzz, так Вам коллега alpap и пишет, что для приведённых им в примере команд на экране ничего не будет при их корректном исполнении.
почему нельзя сделать такой же лог, ну или не лог, а просто запись cmd экрана в текстовый файл, меня бы вполне устроило »
Потому что нет такого понятия, как «запись cmd экрана».
Вы можете использовать tee.exe из комплекта GnuWin32 (например, отсюда: CoreUtils for Windows (http://gnuwin32.sourceforge.net/packages/coreutils.htm)). Кроме того, говорят, что аналог 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
https://i.imgur.com/qV6lAb2.png
https://i.imgur.com/lORcreI.png
и т.п.
Shulzzz, можно в PoSh сделать
Start-Transcript -Path имя_файла
запустить cmd с вашим батником, а после выполнить
Stop-Transcript
в файле будет дамп консоли
можно в PoSh сделать »
Это как бы не лучшим вариантом из возможных оказалось, потому как и stdout перехватывает, и stderr.
Iska, почему? ему же лог нужен, а не success-story.
Блин а что это за колхоз в батнике? MDT разверни и настраивай сборку. Там тебе и логи полноценные и возможностей больше.
ему же лог нужен, »
Неа. По факту ему нужно:
хотелось бы что бы выглядело как на экране в окне cmd, там же все отображается как надо, »
Charg, в чем колхоз то? МДТ этот два раза ставил, так толком и не понял в нем ничего, максимум файл ответов сделать получалось, как сам образ изменить не понял, а в дисм++ все понятно, в аудите то вообще большого ума не надо, делаю как проще, вроде получается. может и до МДТ дорасту когда нибудь.
Iska, Попробовал tee, все работает и это то что мне и нужно, спасибо Вам огромное за грамотные разъяснения!
Upd! Только с кодировкой беда, никак не приведу к общему знаменателю, где то 866, где то 1251, и не пойму как сделать чтобы везде одинаково было.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.