批处理文件创建日志文件

时间:2015-10-12 23:43:51

标签: windows batch-file logging cmd

这应该很简单,不确定为什么它不起作用...... 我有一个2 cmds的批处理文件,我试图让它将输出写入日志文件。

以下是我的批处理文件中的内容:

PUSHD "\\My Very Long\Exact Directory\" >>logfile.txt
for /f "skip=7 eol=: delims=" %%F in ('dir /b /o-d *.xlsm') do del "%%F" >>logfile.txt

PUSHD是因为此文件位于远程文件存储\\My Very Long\Exact Directory\上,我希望在批处理文件所在的目录中执行操作,而不是从中调用它的目录。第二个命令通过删除旧副本来清理目录。

当我运行批处理时,通过从远程服务器调用它,或者直接双击它,cmd窗口打开并运行清理。它将在名为' logfile.txt'的目录中创建一个文件。但它是空的。

调度从远程服务器调用此批处理文件的进程,我希望看到稍后调用此代码时发生的情况。如何将结果写入日志文件。我想它看起来应该与cmd窗口弹出并显示的内容非常相似(它不一样)。

我引用了另一篇文章:Redirecting Output from within Batch file

添加更多,因为我被告知PUSHD或DEL有输出...... 我在文件中暂停以捕获cmd窗口。我希望捕获这些信息,当然还有任何错误。也许这是错误的做法?

X:\File Path\BackUps>PUSHD "\\My Very Long\Exact Directory\"  1>>logfile.txt
Y:\File Path\BackUps>for /F "skip=7 eol=: delims=" %F in ('dir /b /o-d *.xlsm') do del "%F"  1>>logfile.txt
Y:\File Path\BackUps>del "2015 CSLD Weekly Comment Analysis 2015-10-10  9_11_09 .xlsm"  1>>logfile.txt
Y:\File Path\BackUps>del "2015 CSLD Weekly Comment Analysis 2015-10-10 23_55_29 .xlsm"  1>>logfile.txt
Y:\File Path\BackUps>pause
Press any key to continue . . .

1 个答案:

答案 0 :(得分:2)

您可以使用以下批处理代码将 stdout stderr 重定向到日志文件。

@echo off
>>logfile.txt 2>&1 (
    echo INFO: Making "\\My Very Long\Exact Directory\" the working directory ...
    PUSHD "\\My Very Long\Exact Directory\"
    echo INFO: Deleting old *.xlsm files in this directory ...
    for /f "skip=7 eol=: delims=" %%F in ('dir /b /o-d *.xlsm') do (
        echo INFO: Deleting file "%%F" ...
        del "%%F"
    )
)

另请参阅Microsoft TechNet文章Using command redirection operators

>>logfile.txt通过将标准输出(标准输出)的每个文本输出附加到文件,将标准输出重定向到日志文件中。仅当日志文件尚未存在时,才会创建新日志文件。

2>&1 stderr (标准错误)重定向到 stdout 以获取最终标准消息 - 带有echo命令的行 - 以及错误使用的命令将消息输出到日志文件中。