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