获取forfiles帮助页面不应该

时间:2009-07-14 18:30:19

标签: batch-file file-io forfiles

我正在使用以下命令删除超过X天的文件(%numb%是天数):

forfiles -p "%temp%" -s -m *.* -d %numb% -c "cmd /c del @path"

但是,当我执行它时,它只是提示我有forfiles的所有功能以及它应该如何使用。

3 个答案:

答案 0 :(得分:4)

您可能希望将“DEL @path”更改为“echo @path”,直到您解决问题为止......

在我的XPsp3机器上,我注意到天数之前的连字符(%numb%)非常重要。 所以,这个:

forfiles -p "%temp%" -s -m *.* -d 30 -c "cmd /c echo @path"

yeilded this: 错误:找不到具有指定搜索条件的文件。

但是这个:

forfiles -p "%temp%" -s -m *.* -d -30 -c "cmd /c echo @path"

给了我一个目录列表

答案 1 :(得分:1)

有一种猜测,因为你没有提供太多信息,如果你不是在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"

答案 2 :(得分:0)

在本地,您可以使用vbscript。这个例子,num天是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