Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление файлов по дате

Ответить
Настройки темы
CMD/BAT - [решено] Удаление файлов по дате

Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


Всем приветы, помогите пожалуйста с вопросом...

В папке есть масса файлов разной даты, как сделать батник чтобы 10 файлов с последней датой оставлял - самые свежие,
остальные удалял? Причем если в папке меньше 10 файлов, чтобы оставлял все.

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

Помогите плз? Заранее буду ОЧЕНЬ благодарен, с меня +

Отправлено: 12:27, 10-05-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


AlexPebody, например, непосредственно из командной строки для текущего каталога так (уберите «echo» для реального удаления):
Код: Выделить весь код
for /f "skip=10 delims==" %i in ('dir /b /a:-d /o:-d') do @echo del /f /q "%i"
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:45, 10-05-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата AlexPebody:
Мне нужно чтобы из батника работал »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sFolder=%~1

if defined sFolder (
	if exist "%sFolder%\." (
		for /f "skip=10 delims==" %%i in ('dir /b /a:-d /o:-d "%sFolder%\*.*"') do echo del /f /q "%%i"
	) else (
		echo Folder [%sFolder%] not found
	)
) else (
	echo Usage: %~nx0 ^<Path to Folder^>
)

endlocal
exit /b 0
Папку указываете параметром пакетного файла. Для реального удаления уберите «echo» перед «del …».

Цитата AlexPebody:
и возможно ли прикрутить рекурсию на вложенные папки? »
Достаточно странно выглядит условие сохранения 10 последних файлов для дерева папок. В таком виде — нет, нельзя: первичная сортировка при рекурсии в «dir» всегда будет по пути. Потребуются иные средства.

Последний раз редактировалось Iska, 25-07-2013 в 16:33. Причина: Учтено замечание коллеги MMX-Dimitrov

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:17, 10-05-2012 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата AlexPebody:
Т.е. в командной строке указать исполняемый файл bat, пусть скрипт будет del.bat и саму папку? »
Да. Но старайтесь избавляться от привычки именовать пакетные файлы именами внутренних команд или внешних исполняемых файлов. Назовите пакетный файл как-то иначе. Да и расширение для ясности лучше давать «.cmd». То же относится и к именованию каталогов.

Цитата AlexPebody:
в папке дир лежат файлы для удаления, »
Сколько их?
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:39, 10-05-2012 | #4


Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Да. Но старайтесь избавляться от привычки именовать пакетные файлы именами внутренних команд или внешних исполняемых файлов. Назовите пакетный файл как-то иначе. Да и расширение для ясности лучше давать «.cmd». То же относится и к именованию каталогов. »
Запускаю del_bat.cmd "dir" рядом с файлом скрипта лежит папка dir с файлами, удалил echo в скрипте, ничего не происходит с файлами просто cmd окно промелькнет и все...

Запускаю вот так прямо из командной строки cmd: for /f "skip=10 delims==" %%i in ('dir /b /a:-d /o:-d') do del /f /q "%%i" удаляет 10 файлов, а пакетником не работает...

Подскажите что может быть?

Все, доделал сам! Спасибо большое!!!

Для некой рекурсии применил вот это:

Код: Выделить весь код
For /R %%i In (.) Do Copy *.cmd "%%i"
For /R %%i In (*.cmd) Do (
   PUSHD %%~dpi
   If /I Not "%%~dpi"=="%~dp0" CMD /C "%%i"
   POPD
)

Последний раз редактировалось AlexPebody, 10-05-2012 в 14:06.


Отправлено: 13:43, 10-05-2012 | #5


Новый участник


Сообщения: 1
Благодарности: 1

Профиль | Отправить PM | Цитировать


Опечатка небольшая в коде: нужно в цикле тоже прописать каталог, иначе будет срабатывать только для текущего каталога и толку от параметра никакого
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sFolder=%~1

if defined sFolder (
	if exist "%sFolder%\." (
		for /f "skip=10 delims==" %%i in ('dir %sFolder% /b /a:-d /o:-d') do echo del /f /q "%sFolder%\%%i"
	) else (
		echo Folder [%sFolder%] not found
	)
) else (
	echo Usage: %~nx0 ^<Path to Folder^>
)

endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:19, 25-07-2013 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


MMX-Dimitrov, верно, это я прошляпил.

Поправил.

Отправлено: 16:33, 25-07-2013 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление файлов по дате

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удаление файлов по дате больших размеров. Sony777 Скриптовые языки администрирования Windows 11 03-06-2012 16:23
CMD/BAT - [решено] Удаление папки по дате Obnin Скриптовые языки администрирования Windows 8 14-12-2011 13:21
CMD/BAT - [решено] Создание папок по дате получения файлов и перемещение в них файлов KamikadZZe Скриптовые языки администрирования Windows 1 01-09-2011 14:15
CMD/BAT - Удаление файлов по дате ADGJMPTW Скриптовые языки администрирования Windows 1 10-10-2010 20:08
VBS/WSH/JS - [решено] VBS/WSH. Сортировка файлов по дате. rancid Скриптовые языки администрирования Windows 3 23-07-2009 06:38




 
Переход