2015-08-26 5 views
0

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

if exist "C:\Users\John\Documents\Week*" 
(
forfiles /D -30 /C "cmd /c del C:\Users\John\Documents\Week*" 
) 
else (exit) 

Однако ничего не происходит.

+0

просто попробовать с 'дель/к "C: \ Users \ John \ Documents \ Неделя *" 2> nul' – npocmaka

+0

Forfiles/d -30/с«что-то «с тем же« чем-то »для каждого файла старше 30 дней. В вашем случае, если C: \ Users \ John \ Documents \ Week * соответствует всем, что ВСЕ, они будут удалены один раз для каждого файла в текущем каталоге старше 30 дней - если в текущем каталоге старше 30 дней вы удаляете ВСЕ файлы, соответствующие C: \ Users \ John \ Documents \ Week * 10 раз. –

+2

@npocmaka, если я совершенно не прав, он не хочет удалять все файлы, соответствующие этому шаблону - только те, которые старше 30 дней. –

ответ

1

Ваш код исполняет: del с маской, содержащей все соответствующие файлы. Вы должны разрешить forfiles искать файлы и выполнять удаление для каждого из них.

Вы можете попробовать что-то вроде

if exist "C:\Users\John\Documents\Week*" (
    forfiles /D -30 /P "C:\Users\John\Documents" /M "Week*" /C "cmd /c del @PATH" 
) else (exit) 
+0

Это сработало. Но пришлось удалять цитаты с пути. Спасибо @MCND – John

+0

@John, извините, я включил окончательный обратный слэш в пути, который не должен присутствовать (он избегает цитаты). Удалены. –

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