删除文件时,将其写入logfile(BATCH)

时间:2014-04-09 14:29:45

标签: batch-file logging delete-file

据说我想从C:\驱动器中删除日志文件。 (XXX-Log1.log XXX-Log2.log)

问题:如果文件被删除(我只是使用del /f /q C:\*.log命令),显然没有输出。

如何在删除文件时将输出写入日志文件?我知道写入日志文件可以使用>>"D:\What\Ever\Deleted.log",但我想显示删除了哪些文件,如果有的话。

2 个答案:

答案 0 :(得分:1)

如果文件夹没有任何子目录,那么这将起作用:

@echo off
setlocal enableextensions
del /s "c:\folder\*.log" >file.log
pause

答案 1 :(得分:1)

这是一个vbscript,可用于监视文件夹中的删除事件。这可能会做你想要的。只需使用cscript调用它,例如cscript /nologo monitorfolder.vbs您需要编辑它以在您的路径中进行监控。我刚用我的C:\ temp文件夹进行测试。

MonitorFolder()

Function MonitorFolder()
intInterval = "2"
strDrive = "C:" 
strFolder = "\\temp\\"
strComputer = "." 
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.CreateTextFile("C:\temp\Deleted.log")
Set objWMIService = GetObject( "winmgmts:" & _ 
    "{impersonationLevel=impersonate}!\\" & _ 
    strComputer & "\root\cimv2" )
strQuery =  _
    "Select * From __InstanceOperationEvent" _
    & " Within " & intInterval _
    & " Where Targetinstance Isa 'CIM_DataFile'" _
    & " And TargetInstance.Drive='" & strDrive & "'" _
    & " And TargetInstance.Path='" & strFolder & "'"
Set colEvents = objWMIService.ExecNotificationQuery (strQuery) 
WScript.Echo "Monitoring events...[Ctl-C] to end"
Do 

    Set objEvent = colEvents.NextEvent()
    Set objTargetInst = objEvent.TargetInstance

    Select Case objEvent.Path_.Class 
        Case "__InstanceDeletionEvent" 
            objFile.WriteLine(objTargetInst.Name)
    End Select 
Loop
End Function