Batch file Getting forfiles帮助页,它应该在哪里';T
我正在使用以下命令删除超过X天的文件(Batch file Getting forfiles帮助页,它应该在哪里';T,batch-file,file-io,forfiles,Batch File,File Io,Forfiles,我正在使用以下命令删除超过X天的文件(%numb%是天数): 不过,当我执行它时,它只会提示我forfiles的所有功能以及应该如何使用它。由于您没有提供太多信息,有一种猜测是,如果您不在2003/Vista上,那么您不应该在每个参数后面留有空格: forfiles -p"%temp%" -s -m*.* -d%numb% -c"cmd /c del @path" 也可能是您的替换参数未按预期工作。我发现在命令前面加上“echo”前缀通常很有帮助,以查看实际正在处理的内容: echo forf
%numb%
是天数):
不过,当我执行它时,它只会提示我forfiles的所有功能以及应该如何使用它。由于您没有提供太多信息,有一种猜测是,如果您不在2003/Vista上,那么您不应该在每个参数后面留有空格:
forfiles -p"%temp%" -s -m*.* -d%numb% -c"cmd /c del @path"
也可能是您的替换参数未按预期工作。我发现在命令前面加上“echo”前缀通常很有帮助,以查看实际正在处理的内容:
echo forfiles -p "%temp%" -s -m *.* -d %numb% -c "cmd /c del @path"
您可能希望将的“DEL@path”更改为的“echo@path”,直到您解决了这些问题 在我的XPsp3机器上,我注意到天数(%numb%)之前的连字符很重要。 那么这个,
forfiles -p "%temp%" -s -m *.* -d 30 -c "cmd /c echo @path"
是这样的:
错误:未找到具有指定搜索条件的文件
但这是:
forfiles -p "%temp%" -s -m *.* -d -30 -c "cmd /c echo @path"
给了我一个本机目录列表,您可以使用vbscript。在本例中,num days是30
Set objFS = CreateObject("Scripting.FileSystemObject")
strFolder = "c:\test"
numdays=30
today=Now
Set objFolder = objFS.GetFolder(strFolder)
Go (objFolder)
Sub Go(objDIR)
If objDIR <> "\System Volume Information" Then
For Each eFolder in objDIR.SubFolders
Go eFolder
Next
For Each strFile In objDIR.Files
If DateDiff("d",strFile.DateLastModified,today) >= numdays Then
WScript.Echo "file found that is 1 month old or more: " & strFile
'objFSO.DeleteFile(strFile) 'uncomment to use
End If
Next
End If
End Sub
Set objFS=CreateObject(“Scripting.FileSystemObject”)
strFolder=“c:\test”
numdays=30
今天=现在
设置objFolder=objFS.GetFolder(strFolder)
转到(objFolder)
副Go(objDIR)
如果objDIR“\System Volume Information”,则
对于objDIR.SubFolders中的每个eFolder
付账
下一个
对于objDIR.Files中的每个strFile
如果DateDiff(“d”,strFile.DateLastModified,today)>=numdays那么
WScript.Echo“找到1个月或1个月以上的文件:”&strFile
“objFSO.DeleteFile(strFile)”取消注释以使用
如果结束
下一个
如果结束
端接头
谢谢你,你给了我很多好处。。。我想before命令实际上是说接下来30天看看。。。哈哈。。你的回答帮了大忙。。谢谢如果您不习惯使用任何第三方软件,请查看此注释,与MS docs所说的相反,for files
中的/m*
并不匹配所有文件。它将只匹配名称具有扩展名的文件。如果要匹配所有文件,则需要/m*
。或者完全忽略/m
,因为/m*
是默认值。
Set objFS = CreateObject("Scripting.FileSystemObject")
strFolder = "c:\test"
numdays=30
today=Now
Set objFolder = objFS.GetFolder(strFolder)
Go (objFolder)
Sub Go(objDIR)
If objDIR <> "\System Volume Information" Then
For Each eFolder in objDIR.SubFolders
Go eFolder
Next
For Each strFile In objDIR.Files
If DateDiff("d",strFile.DateLastModified,today) >= numdays Then
WScript.Echo "file found that is 1 month old or more: " & strFile
'objFSO.DeleteFile(strFile) 'uncomment to use
End If
Next
End If
End Sub