2013-06-17 4 views
1

Я хочу удалить старые файлы из разных мест, кроме последнего файла.Как удалить старые файлы из местоположения

Предположим, что есть три папки внизу, я хочу удалить файлы из них, кроме последнего файла.

F:\Financial\Data\Reports\ExpensesYTD 

ниже файлов в папке, я хочу, чтобы удалить все, кроме Expenses.05312013 (имена файлов являются переменными)

Expenses.01312013 
Expenses.02282013 
Expenses.03312013 
Expenses.04302013 
Expenses.05312013 

То же самое для других тоже.

F:\Financial\Data\Reports\AccountPnlMTD 
F:\Financial\Data\Reports\ExpensesMTD 

New Edit:

F: \ Финансовые \ Data \ Reports F: \ Financial \ Data \ Итоговые отчеты F: \ Financial \ Data \ Сырая Отчеты

Каждый Выше путь имеет те же папки (ExpensesYTD, AccountPnlMTD, ExpensesMTD..etc) в конце пути.

Я не хочу давать такой путь.

F: \ Финансовый \ Data \ Reports \ ExpensesYTD F: \ Финансовый \ Data \ Reports \ AccountPnlMTD F: \ Финансовый \ Data \ Reports \ ExpensesMTD и тот же процесс для дорожек остальных.

где ExpensesYTD, AccountPnlMTD, ExpensesMTD папки исправлены, поэтому я хочу, чтобы dirsribe только varibales пути в скрипте.

+0

Что говорит вам, что 'Expenses.05312013' является последней один? – Joey

+0

что такое ** последний **? Последние: создавать, писать или читать? – Endoro

+0

последние созданные в папке –

ответ

2

решение для 6/17/2013 2:08:00 PM формата времени, посмотрите на выходе и убрать слово echo перед тем del, если OK:

@echo off &SETLOCAL 
for %%i in (
    "F:\Financial\Data\Reports\ExpensesYTD" 
    "F:\Financial\Data\Reports\AccountPnlMTD" 
    "F:\Financial\Data\Reports\ExpensesMTD" 
    ) do (
    PUSHD "%%~i" 
    for /f "tokens=4* skip=1" %%j in ('dir /a-d /O-D /TC /-C ^| findstr "^[0-9]"') do echo del "%%~k" 
    POPD 
) 
+0

Endoro .. Я пробовал это, но он не удаляет файлы. Однако в сценарии отображается del «Expenses.01312013.csv». –

+0

Thx Endoro Это работает ... –

+0

Если есть иначе как «F: \ Financial \ Data \ Final Reports \ ExpensesYTD», тогда как это будет работать? –

0

Примечание. Это может иметь потенциальные осложнения с именами файлов Unicode, в зависимости от настроек консоли. Считайте себя предупрежденным.

Вы можете получить список файлов, упорядоченных по дате создания с

dir /B /TC /O-D F:\Financial\Data\Reports\ExpensesYTD 

Вы можете выполнить пошаговый с for и удаления каждого из них, пропуская первый (новые):

for /f "usebackq skip=1 delims=" %%F in (`dir /B /TC /O-D F:\Financial\Data\Reports\ExpensesYTD`) do del "%%F" 

Непроверенный, но должен работать. Как всегда, когда вы занимаетесь удалением файлов, создайте резервную копию на случай, если все пойдет не так.

+0

'dir/b' не сортируется для'/TC', попробуйте .... – Endoro

+0

thx Joey ..Было бы здорово, если бы вы могли предоставить полную версию, включая путь и все. –

+0

@Endoro: Это делает для меня. – Joey