я вижу это - Batch file to delete files older than N daysПакетный файл для удаления файлов старше N часов или минут
Но как я могу удалить файлы старше N часов или минут?
Спасибо.
я вижу это - Batch file to delete files older than N daysПакетный файл для удаления файлов старше N часов или минут
Но как я могу удалить файлы старше N часов или минут?
Спасибо.
Его сложно сделать это (независимо от настройки даты времени) даже с WSH \ Jscript \ VBscript в WSH не возвращает объект даты, когда вы запрашиваете свойства даты/времени файла, но строка, которая зависит от (можно использовать wmi, но это повлияет на производительность). Я полагаю, вы установили инфраструктуру .net, которая делает задачу намного проще. Here's гибридный инструмент, который должен работать в вашем случае. Вы можете сохранить его с любым именем, которое вы хотите. Вот как использовать его (ее называют FileDateFilterJS.bat
в данном примере):
@echo off
for /f "tokens=* delims=" %%# in ('FileDateFilterJS.bat "." -hh -5') do (
echo deleting "%%~f#"
echo del /q /f "%%~f#"
)
pause
Где часы 5 - -hh -5
и каталог является текущим - "."
.Вы можете удалить echo
до del
команды.
Этот сценарий занял у меня гораздо больше времени, чем я ожидал (несмотря на то, что я исследовал тему и готовил некоторые детали), и ее не испытывают так тяжело, поэтому, вероятно, она по-прежнему не работает без ошибок. И я полагаю, что помощь сообщение и варианты могут быть улучшены.
'FSO.GetFile.DatePropertyOfSomeSort', кажется, обрабатывает 'Date()' математику объекта в шаге для меня. См. [Этот ответ] (http://stackoverflow.com/a/27297874/1683264) для примера. Я почти не хочу указывать на это, поскольку, похоже, вы потратили немало времени и сил на свой гибрид компании. 'o ° /' – rojo
Да, подтверждено. 'WSH.Echo (typeof file.DateLastModified)' echoes 'date'. Ну, все равно +1. – rojo
этот work.thanks – houngtze
Here's другой сценарий, который полагается только на WSH/JSCRIPT и почти тот же интерфейс (и не требует .net установлен) .Чтобы показать файлы старше 5 часов использования:
FileTimeFilterJS.bat "." -hh -5 -filetime modified
Ни одно из решений здесь работал на меня. Они очень инновационные решения, и первый (.net/FileTimeFilerJS.bat [sic]) действительно работал один раз для меня. Однако, когда я попытался вызвать его в другой папке, он просто разбился. Я попробовал второй (jscript/FileTimeFilterJs.bat), но он не удалил все файлы старше одного часа.
Для решения этой проблемы требуется исполняемый файл, но я нашел, что это лучшее решение для меня.
Скачано FindUtils из GnuWin32 и извлечено 3 файла (вам нужно загрузить два ZIP-файла ниже): libintl3.dll, libiconv2.dll и find.exe (в сочетании они размером около 1 МБ). Я переименовал find.exe в gnu_find.exe, чтобы избежать команды Windows FIND.
Затем вы можете запустить прекрасную команду GNU (ниже команды для всех почтовых файлов старше 120 минут в папке, указанной в переменной окружения% Fldr%):
gnu_find %fldr% -name *[.:]zip -type f -mmin +120 -delete
Вместо * .zip, я используйте * [.] zip, потому что Windows 7+ расширит * .zip, прежде чем find сможет его использовать.
Пожалуйста, не только для чтения наиболее проголосовали ответ, читайте также другие ответы. Несколько других ответов поддерживают также небольшие временные дельта, такие как [мой ответ] (http://stackoverflow.com/a/28395552/3074564), написанный вчера, который работает с секундами. – Mofi
[См. Этот ответ] (http://stackoverflow.com/a/27297874/1683264) для других идей. – rojo