2009-05-24 1 views

ответ

1

Вы можете использовать forfiles:

forfiles /D -1 /M log.txt /C "cmd /c del @file" 
+0

Если у меня возникнут проблемы с установкой новой программы, вместо этого я установлю PowerShell. (Кроме того, вы должны ссылаться на файлы) –

+0

А? Файловые файлы содержатся в последних версиях Windows. Не нужно ничего устанавливать. – Joey

+0

файлы в порядке, потому что если вы используете PowerShell, вам действительно нужно установить новую программу. с файлами forfiles, вы можете просто положить forfiles.exe в каталог пакета. –

2

PowerShell должен заменить партию.

 
if ((dir log.txt).LastWriteTime -lt [datetime]::today) { del log.txt } 

+0

После просмотра вашего примера я согласен :) – RedFilter

+0

... хотя я немного опечален - я просто понял, что партия была моим первым языком около 25 лет назад , GOTO и все такое! – RedFilter

+0

Действительно ли это невозможно без powershell? Не все компьютеры имеют Powershell. Это будет что-то с большим количеством пользователей, и я не хочу делать это слишком сложным для них. –

0

Batch делает что-то, что просто очень сложный. Если вы можете использовать Cygwin, или установить Unix Tools, рассмотреть возможность сделать что-то вроде этого:

find log.txt -mtime +1 -exec rm {} \; 

UPDATE
нашел что-то, что может быть useful к вам, используя чистую партию. Вы должны иметь возможность модифицировать и адаптировать его в соответствии с вашими потребностями.

+0

«Нашел то, что может быть полезно для вас, используя чистую партию» - я бы не использовал его, поскольку он полагается на предположения о региональных настройках (формат даты в США). – Joe

1

К сожалению, вы не можете сделать это надежным и общим способом (*).

Powershell, Cygwin, Unix Tools - отличные решения, если вы можете быть уверены, что они будут установлены на целевой машине.

Я написал небольшую служебную программу, которая берет путь с подстановочными знаками и количеством дней и удаляет все файлы, соответствующие пути, который превышает указанное количество дней. В моей среде это было более удобно, чем установка стороннего пакета.

(*) Следующие действия будут работать для вашего конкретного случая (дата модификации не сегодня), если формат коротких дат в ваших региональных настройках включает в себя век (то есть длина 10 символов). Но это не обобщается на N дней, и я не хотел полагаться на региональные настройки компьютера для такого рода вещи:

for %%i in (log.txt) do SET FILETIME=%%~ti 
IF NOT "%FILETIME:~0,10%" == "%DATE%" DEL /f log.txt 
0

За что его стоит использовать jscript или vbscript. Оба этих языка сценариев были установлены на платформах MS с середины 90-х годов

Смежные вопросы