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

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

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

Старожил


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

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


Изменения
Автор: zavoruev
Дата: 03-07-2009
Всем добрый день!!!!
есть необходимость дописать скрипт, я в этом деле не мастер, но вот сейчас понадобилось.
Вот существующий
for /f "tokens=5,7,6 delims=_ " %%i in ('date /t') do (set date = %%i-%%j-%%k)
echo %date%
set new_name=%date%
echo %new_name%

Mkdir d:\Backup\%new_name%
CD /D d:\Backup\%new_name%
Xcopy d:\mazda /S /E
Суть такова, делается папка с названием даты (число, месяц, год), необходимо чтобы после отрабатывания вот этого скрипта удалялись папки недельной давности отсчетом от вновь созданного. Например:
Сегодня создалась утром папка 03.07.09, а уавтоматом удалилась 27.06.09.
Заранее всем благодарен!!!!

Отправлено: 14:32, 03-07-2009

 

Старожил


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

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


В скрипт не вчитывался, но возможно, что достаточно в процедуре удаления заменить условие If %$D% EQU 01 на If %$D% LEQ 03, тогда условие будет отработано 1, 2 и 3го числа, но сначала протестируйте "на кошках"

ЗЫ: По-хорошему это вопрос должен был быть задан здесь: http://forum.oszone.net/thread-144124.html

-------
Как сказало Дерево Дровосеку: "я - пень".


Последний раз редактировалось NiOl, 06-08-2009 в 18:02. Причина: наткнулся на исходник


Отправлено: 18:00, 06-08-2009 | #11



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

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


Старожил


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

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


Поменял значение LEQ 01 на LEQ 03. "Кошки" остались живы, а вот удаление так и не произошло.
PS: Тему ту создавал я,и как раз сейчас идет доработка скрипта!!!!!!!!!!

Отправлено: 10:25, 07-08-2009 | #12


Старожил


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

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


ответил здесь >>

-------
Как сказало Дерево Дровосеку: "я - пень".


Отправлено: 12:42, 07-08-2009 | #13


Старожил


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

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


В неделе 2 выходных дня (насколько понял в шедл указано запускать только по рабочим дням), поэтому если процедура удаления будет запускаться 1го, 2го и 3го числа (не 6го как вчера или 7го, как сегодня), то как минимум один из 3х дней попадет на будни. А в этот раз Вам нужно удалить ручками.

-------
Как сказало Дерево Дровосеку: "я - пень".


Отправлено: 12:45, 07-08-2009 | #14


Старожил


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

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


Я опять тебя не понимаю!!!!! Тот топик завел я и отвечал мне на него AMEL27. Я его там задам!!!! Только скажи, ты то помочь сможешь?????

Отправлено: 12:46, 07-08-2009 | #15


Старожил


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

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


в августе месяце удаление июльских файлов не произошло, так как 1 и 2 числа были суббота и воскресенье, а по этим дням бэкапы не делаются!!!! подскажите как доработать скрипт чтобы таких ситуаций не возникало. Заранее спасибо!!!

Echo Off

Set $SRC=D:\Mazda\2008
Set $DST=D:\Full_Backup

:: Текущие день/месяц/год
For /F "Tokens=1 Delims=." %%i In ('WMIC OS Get LocalDateTime^|Find "."') Do Set $Time=%%i
Set $Y=%$Time:~0,4%&Set $M=0%$Time:~4,2%&Set $D=0%$Time:~6,2%
Set $M=%$M:~-2%&Set $D=%$D:~-2%

:: Копирование каталога
XCopy /S/E/D/C/Q/exclude:C:\scripts\excludelist.txt %$SRC%\* %$DST%\%$D%.%$M%.%$Y%\

:: Дата 1-го дня предыдущего месяца
Set /A $M=%$M%+11-((%$M%+10)/12)*12
Set $M=0%$M%
Set $M=%$M:~-2%
If %$M% EQU 12 Set /A $Y-=1

:: Удаляем старые архивные каталоги
If %$D% EQU 01 For /F "Tokens=1-3 Delims=." %%i In ('DIR /B/A:D %$DST%\??.??.????') Do If %%k%%j%%i LSS %$Y%%$M%01 @Echo RD /S/Q "%$DST%\%%i.%%j.%%k"

То есть поменять значение EQU 01 на EQU 03 и ждать следующего месяца??????

Отправлено: 12:48, 07-08-2009 | #16


Старожил


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

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


У тебя возникла проблема. Ты для нее завел тему. Сейчас ты завел вторую тему по тому же вопросу. А отвечают в темах все, у кого есть на то возможность. Потому и ответил я именно в той ветке. Если кратко повторить мой ответ - в следующий раз скрипт должен удалить, но не сегодня, т.к. уже 7е число. Чтобы скрипт отрабатывал более точно, то предложенных исправлений недостаточно.

-------
Как сказало Дерево Дровосеку: "я - пень".


Отправлено: 13:13, 07-08-2009 | #17


Старожил


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

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


Цитата zavoruev:
То есть поменять значение EQU 01 на EQU 03 и ждать следующего месяца? »
нет, поменять "равно 01" (EQU 01) на "меньше или равно 03" (LEQ 03).
tще в примере заметил вообще невыполняющуюся команду удаления - она просто выводится на экран. Нужно убрать "@Echo", чтобы сразу шло "RD..."
далее, можно вообще убрать условие "If %$D% EQU 01", оставив "FOR...", тогда скрипт будет пытаться удалять старые каталоги при каждом запуске, т.е. каждый день. Это будет лишним временем выполнения, но тогда точно удалит.

-------
Как сказало Дерево Дровосеку: "я - пень".

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

Отправлено: 13:20, 07-08-2009 | #18


Googler


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

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


zavoruev, слушай NiOl, он дело говорит...

FYI: Как сообщить о том, что моя проблема решена?

Последний раз редактировалось amel27, 08-08-2009 в 14:38. Причина: добавил линк


Отправлено: 12:46, 08-08-2009 | #19


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


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

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


В продолжении темы, ребят пожалуйста помогите написать следующий батник. Требуется из папки сделать выборку файлов старше например 6 дней с даты создания переместить в другую папку и за архивировать. Я написал скрипт архивации но вот как по дате сделать даже и не знаю т.е как выбрать файлики лежащие в этой папке больше 6 дней.
Скрипт:
setlocal ENABLEDELAYEDEXPANSION
set day=%date:~0,2%
set month=%date:~3,2%
set year=%date:~6,4%
set today=%year%%month%%day%
set /a yesterday=today
7z a -tzip D:\tmp\Work\archiv_%yesterday% %fpath% *.txt
del D:\tmp\Work\*.txt
P.S надо сделать именно 7-zip т.к он бесплатный...

Отправлено: 12:59, 19-08-2009 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удаление папок по критериям jentoso Скриптовые языки администрирования Windows 16 17-06-2009 11:38
Любой язык - [решено] удаление файлов по маске, созданных за прошлые сутки BRAT2 Скриптовые языки администрирования Windows 1 06-04-2009 08:51
VBS/WSH/JS - [решено] Удаление файлов созданных ранее текущей даты на неделю KillHunter Скриптовые языки администрирования Windows 5 06-03-2009 12:23
[решено] Удаление файлов и папок ArGoth Автоматическая установка Windows 2000/XP/2003 1 26-05-2008 18:03
Удаление всех папок и файлов из папки c:\Temp DIKPro Microsoft Windows NT/2000/2003 10 15-08-2006 16:20




 
Переход