据说我想从C:\驱动器中删除日志文件。 (XXX-Log1.log XXX-Log2.log)
问题:如果文件被删除(我只是使用del /f /q C:\*.log
命令),显然没有输出。
如何在删除文件时将输出写入日志文件?我知道写入日志文件可以使用>>"D:\What\Ever\Deleted.log"
,但我想显示删除了哪些文件,如果有的话。
答案 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