Получение страницы справки для файлов, где это не должно - PullRequest
2 голосов
/ 14 июля 2009

Я использую следующую команду для удаления файлов старше X дней (%numb% - количество дней):

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

Тем не менее, когда я запускаю его, он просто подсказывает мне все функции forfiles и как его использовать.

Ответы [ 3 ]

4 голосов
/ 15 июля 2009

Возможно, вы захотите изменить "DEL @path" на "echo @path" , пока вы не проработаете изломы ...

На моей машине с XPsp3 я заметил, что важен дефис до количества дней (% онемения%). Итак, это:

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

получил это: ОШИБКА: не найдено файлов с указанными критериями поиска.

но это:

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

дал мне список каталогов

1 голос
/ 14 июля 2009

Можно предположить, что поскольку вы не предоставили много информации, если вы не работаете в 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"
0 голосов
/ 15 июля 2009

Собственно, вы можете использовать vbscript. этот пример, число дней 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
...