Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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 Getting forfiles帮助页,它应该在哪里';T_Batch File_File Io_Forfiles - Fatal编程技术网

Batch file Getting forfiles帮助页,它应该在哪里';T

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

我正在使用以下命令删除超过X天的文件(
%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