Batch file 删除文件时,将其写入日志文件(批处理)
我想从C:\驱动器中删除日志文件。(XXX-Log1.log XXX-Log2.log) 问题:如果删除了一个文件(我只是使用Batch file 删除文件时,将其写入日志文件(批处理),batch-file,logging,delete-file,Batch File,Logging,Delete File,我想从C:\驱动器中删除日志文件。(XXX-Log1.log XXX-Log2.log) 问题:如果删除了一个文件(我只是使用del/f/q C:\*.log命令),显然没有输出 当一个文件被删除时,我怎样才能将输出写入日志文件?我知道要写入日志文件,您可以使用>“D:\What\Ever\Deleted.log”,但我想显示哪些文件被删除,如果有的话。如果文件夹没有任何子目录,那么这将起作用: @echo off setlocal enableextensions del /s "c:\fol
del/f/q C:\*.log
命令),显然没有输出
当一个文件被删除时,我怎样才能将输出写入日志文件?我知道要写入日志文件,您可以使用
>“D:\What\Ever\Deleted.log”
,但我想显示哪些文件被删除,如果有的话。如果文件夹没有任何子目录,那么这将起作用:
@echo off
setlocal enableextensions
del /s "c:\folder\*.log" >file.log
pause
下面是一个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
我明天试试这个。但是,通常会有子目录。如果是这样的话,你知道该怎么办吗?谢谢.foxidrive,我已经测试了这个解决方案,没有子目录,但是日志文件是空的。有什么想法吗?谢谢,你说得对。我忘了附加/s开关。我在这里进行了测试(使用/s/f/q),还有一个子目录。文件已被删除并记录。我将测试如果存在多个子曲面,它是否也可以工作。奇怪的是,它仅在使用/s开关时才会被记录?所有子目录中与filespec匹配的所有文件都将被删除。如果你能使用它,那么它是最简单、最快的方法。如果没有,则需要使用循环并分别删除/记录每个文件。