我正在使用以下命令删除早于 X 天的文件(%numb%
是天数):
forfiles -p "%temp%" -s -m *.* -d %numb% -c "cmd /c del @path"
尽管如此,当我执行它时,它只会提示我 forfiles 的所有功能以及应该如何使用它。
我正在使用以下命令删除早于 X 天的文件(%numb%
是天数):
forfiles -p "%temp%" -s -m *.* -d %numb% -c "cmd /c del @path"
尽管如此,当我执行它时,它只会提示我 forfiles 的所有功能以及应该如何使用它。
您可能希望将“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"
给了我一个目录列表
一种猜测是,由于您没有提供太多信息,如果您不在 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"
在本机,您可以使用 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