启用记录到批处理文件命令

时间:2019-01-07 18:52:28

标签: windows batch-file

我想启用对批处理文件的日志记录,该文件应该记录命令提示符的所有内容,包括输入/​​输出/错误。因此,我尝试了类似以下的操作,但是它导致一个没有任何内容的空日志文件。看来,我缺少了一些东西。下面是批处理文件。

@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 :(得分:1)

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

答案 1 :(得分:0)

日志文件为空,因为您使用命令

抑制了输出
echo off

在应记录的命令之前使用echo on。命令cd通常不会将任何内容发送到stdout。这就是为什么您得到一个空文件的原因。

我建议不要使用这种ping

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