Включить ведение журнала в командный файл - PullRequest
0 голосов
/ 07 января 2019

Я хочу включить ведение журнала в командный файл, который должен регистрировать все содержимое командной строки, включая ввод / вывод / ошибку. Итак, я попробовал что-то вроде следующего, но это приводит к пустому файлу журнала без какого-либо содержимого. Похоже, я что-то упустил. Ниже приведен пакетный файл.

@echo off​
SET LOGFILE=C:\Users\xason\Desktop\Logs\logs.txt
call :logit
exit /b 0
​
:logit
set root=C:\ORACLE\ORA_DRIVERS
cd %root% >> %LOGFILE%
UPDATE.EXE E:\class.ora
ping 127.0.0.1 -n 6 > nul

Ответы [ 2 ]

0 голосов
/ 07 января 2019

cd команда не имеет STDOUT. Возможно, вам нужно добавить STDOUT вашего командного файла в текстовый файл. Запустите ваш командный файл из cmd:

batch_file.bat >> "C:\Users\xason\Desktop\Logs\logs.txt"

Или внутри вашего командного файла:

@echo off​
SET LOGFILE=C:\Users\xason\Desktop\Logs\logs.txt
(call :logit)>>"%LOGFILE%"
exit /b 0
​
:logit
set root=C:\ORACLE\ORA_DRIVERS
cd %root%
UPDATE.EXE E:\class.ora
ping 127.0.0.1 -n 6 > nul

Или даже:

@echo off​
SET LOGFILE=C:\Users\xason\Desktop\Logs\logs.txt
call :logit
exit /b 0
​
:logit
set root=C:\ORACLE\ORA_DRIVERS
cd %root%
(UPDATE.EXE E:\class.ora)>>%LOGFILE%
ping 127.0.0.1 -n 6 > nul
0 голосов
/ 07 января 2019

Файл журнала пуст, потому что вы подавили вывод командой

echo off

Используйте echo on вместо команд, которые должны быть зарегистрированы. Команда cd обычно ничего не отправляет на стандартный вывод. Вот почему вы получили пустой файл.

Вместо этой пинги я рекомендую

timeout 6

Попробуйте это:

@echo off​
SET LOGFILE=C:\Users\xason\Desktop\Logs\logs.txt
echo on
call :logit >>%LOGFILE%
exit /b 0 ​ 

:logit 
set root=C:\ORACLE\ORA_DRIVERS 
cd %root%
UPDATE.EXE E:\class.ora 
@timeout 6 >nul
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...