删除指定的文件并在 CMD 中记录所有输出

删除指定的文件并在 CMD 中记录所有输出

我为我工作的一所学校编写了一个脚本,用于自动将文件夹安装为驱动器X:,然后进入驱动器X并递归扫描所有文件夹和子文件夹以查找.bat.cmd和文件并删除它们。该脚本几乎完美运行。我的问题是,如果有任何错误(例如,驱动器路径太长),它不会将其记录到文本文件中。有没有办法用批处理文件来完成这个?.exe.vbs

@echo off
net use X: \\NETWORK PATH HERE
X:
cls
Echo Deleting bat files please wait...
del /s *.bat > DeletedFiles.txt
Echo Deleting CMD files please wait...
del /s *.cmd >> DeletedFiles.txt
Echo Deleting VBS files please wait...
del /s *.vbs >> DeletedFiles.txt
Echo Deleting Executable files please wait...
del /s *.exe >> DeletedFiles.txt
Echo Process Completed
set /p=Press Any Key To Close

目前,我必须(手动)从 CMD 窗口读取并整理所有错误。将所有错误和已删除的文件保存到文本文件中以备记录,这很方便。

PowerShell 也不行;尽管我是系统管理员,但教育部门不会授予我运行 PowerShell 或 VBS 脚本的权限。

答案1

从:https://stackoverflow.com/questions/1420965/redirect-stdout-and-stderr-to-a-single-file

您可以将标准输出 (stdout) 和标准错误 (stderr) 重定向到同一个日志文件。

例如

dir > a.txt 2>&1

答案2

备选删除并输出日志:

robocopy [empty folder] [path of file] [file to delete or wildcards] /purge

要测试使用/l:

robocopy [empty folder] [path of file] [file to delete or wildcards] /purge /l

真实样品:

C:\TEMP>dir /b

FILE_to_DELETE.txt

C:\TEMP>robocopy C:\EMPTY %cd% FILE_to_DELETE.txt /purge /l
-------------------------------------------------------------------------------    ROBOCOPY     ::     Robust File Copy for Windows
-------------------------------------------------------------------------------
Started: quinta-feira, 10 de dezembro de 2015 13:42:34
Source: C:\EMPTY\
Dest: C:\TEMP\
Files: FILE_to_DELETE.txt
Options: /L /DCOPY:DA /COPY:DAT /PURGE /R:1000000 /W:30
------------------------------------------------------------------------------
           0    C:\EMPTY\
          *EXTRA File                  0        FILE_to_DELETE.txt

------------------------------------------------------------------------------
        Total    Copied   Skipped  Mismatch    FAILED    Extras
        Dirs :         1         0         0         0         0         0     Files :         0         0         0         0         0      
    1    Bytes :         0         0         0         0         0      
    0    Times :   0:00:00   0:00:00                       0:00:00  
    0:00:00    Ended : quinta-feira, 10 de dezembro de 2015 13:42:34


C:\TEMP>robocopy C:\EMPTY %cd% FILE_to_DELETE.txt /purge

-------------------------------------------------------------------------------
ROBOCOPY     ::     Robust File Copy for Windows   
-------------------------------------------------------------------------------

      Started : quinta-feira, 10 de dezembro de 2015 13:42:41    Source
    : C:\EMPTY\
         Dest : C:\TEMP\

        Files : FILE_to_DELETE.txt

      Options : /DCOPY:DA /COPY:DAT /PURGE /R:1000000 /W:30
-----------------------------------------------------------------------------
              0    C:\EMPTY\
              *EXTRA File                  0        FILE_to_DELETE.txt
------------------------------------------------------------------------------
       Total    Copied   Skipped  Mismatch    FAILED    Extras
        Dirs :         1         0         0         0         0         0    Files :         0         0         0         0         0      
    1    Bytes :         0         0         0         0         0      
    0    Times :   0:00:00   0:00:00                       0:00:00  
    0:00:00    Ended : quinta-feira, 10 de dezembro de 2015 13:42:41

C:\TEMP>dir /b

C:\TEMP>

答案3

看起来你没有在代码中写任何东西来告诉计算机写入日志文件。这是整个脚本,还是只是你正在处理的部分?这不是我的核心领域,但我希望看到一个“if”或“ElseIf”语句来告诉计算机该做什么。我正在编造语言,但这是一般的想法。

IF File cannot be deleted (Return Code X)
THEN Output Return Code + Filename to Logfile.txt

答案4

从您的 bat 文件中,您将获得一个文件“DeletedFiles.txt”,其中包含所有已删除文件的列表。如果您想要在执行 bat 文件时生成的所有文本,您可以使用以下命令:$mybatfile.bat>mylogfile.txt 2>&1 复制代码 其中 mybatfile.bat 是要执行的 bat 文件,mylogfile.txt 是在命令提示符中生成的输出文件的名称(会出现所有错误) 是存储执行该bat文件的内容的。

您还可以使用命令 $dir /s /b *.c 以递归方式输出目录和子目录中的所有 *.c 文件,而无需实际删除它们。要记录它,您可以使用 $dir /s /b *.c >listofcfiles.txt

相关内容