Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 删除文件时,将其写入日志文件(批处理)_Batch File_Logging_Delete File - Fatal编程技术网

Batch file 删除文件时,将其写入日志文件(批处理)

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

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

问题:如果删除了一个文件(我只是使用
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匹配的所有文件都将被删除。如果你能使用它,那么它是最简单、最快的方法。如果没有,则需要使用循环并分别删除/记录每个文件。