Windows 批处理文件创建日志文件

Windows 批处理文件创建日志文件,windows,batch-file,logging,cmd,Windows,Batch File,Logging,Cmd,这应该很简单,不知道为什么它不工作。。。 我有一个带有2个cmds的批处理文件,正在尝试让它将输出写入日志文件 @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

这应该很简单,不知道为什么它不工作。。。 我有一个带有2个cmds的批处理文件,正在尝试让它将输出写入日志文件

@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"
    )
)
以下是我的批处理文件中的内容:

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窗口打开和显示的内容非常相似(不一样)

我引用另一个帖子:


添加更多,因为我已被告知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 . . .

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

@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文章

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


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

您的日志文件为空,因为
pushd
del
都不会向屏幕输出任何内容。当您使用
>
时,只有屏幕上显示的内容才会发送到文件中。谢谢!我特别感谢你注意到一个详细而简洁的答复。我相信我给了你正确的答案。再一次,真是帮了大忙,谢谢!
@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"
    )
)