|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление по дате |
|
|
CMD/BAT - [решено] Удаление по дате
|
Новый участник Сообщения: 13 |
Добрый день!
Нашел статью Ссылочка, там удаление папок старше n дней, но поиск делается по маске имени, можно ли сделать, что бы удаление было по дате создания ? @Echo Off Set Arhiv=D:\arhiv Set DeltaDay=-10 SetLocal EnableDelayedExpansion Call :FromNow %DeltaDay% %Date% FOR /F "usebackq delims=" %%d IN (`Dir "%Arhiv%\" /A:D /B`) DO If %%d LSS %yyyymmdd% Rd "%Arhiv%\%%d" /s /q GoTo :Eof :FromNow rem rem Пересчет даты на заданное кол-во дней rem Формат даты dd.mm.yyyy +- дни получим новые yyyymmdd rem rem Пример использования rem rem SetLocal EnableDelayedExpansion rem Set DeltaDay=-10 rem Call :FromNow %DeltaDay% %Date% rem Echo %Date% %DeltaDay% %yyyymmdd% SetLocal Set DT=%2 Set yyyy=%DT:~-4%& set /a mm=100%DT:~3,2%%%100& set /a dd=100%DT:~,2%%%100 Set /A JD=%~1+dd-32075+1461*(yyyy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yyyy+4900+(mm-14)/12)/100)/4 Set /A L=JD+68569,N=4*L/146097,L=L-(146097*N+3)/4,I=4000*(L+1)/1461001 Set /A L=L-1461*I/4+31,J=80*L/2447,K=L-2447*J/80,L=J/11 Set /A J=J+2-12*L,I=100*(N-49)+I+L Set /A yyyy=I,mm=100+J,dd=100+K EndLocal& Set yyyymmdd=%yyyy%%mm:~-2%%dd:~-2% GoTo :Eof |
|
Отправлено: 11:53, 04-07-2013 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать Ну или хотя бы, подскажите, где нужно писать имя папок... например, если мне нужно удалить все папки старше даты d , которые имеют вид base-d
|
Отправлено: 14:00, 04-07-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 124
|
Профиль | Отправить PM | Цитировать #Powershell script. #Don't forget unlock script executing by #using command "Set-ExecutionPolicy RemoteSigned" or "Set-ExecutionPolicy Unrestricted" #Save this file with ".ps1" extension ########################## #перемеменная OlderThan отвечает за разницу дней от текущей даты, # в данном примере старше 40 дней $OlderThan=New-TimeSpan -Days 40 Get-ChildItem -LiteralPath 'C:\My Folder' -Directory | ` Where-Object {$_.CreationTime -gt ((Get-Date)-$OlderThan)} | ` Remove-Item -Force -Recurse |
------- Отправлено: 14:02, 04-07-2013 | #3 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать Цитата sunnykey:
Как я понимаю, достаточно в строке FOR /F "usebackq delims=" %%d IN (`Dir "%Arhiv%\" /A:D /B`) DO If %%d LSS %yyyymmdd% Rd "%Arhiv%\%%d" /s /q ![]() Значит, так делать нельзя, потому, что переменную %%d - нельзя так "соединять" с простыми символами, хоть весь путь и стоит в "".... Как же тогда это сделать ? |
|
Отправлено: 14:30, 04-07-2013 | #4 |
Пользователь Сообщения: 124
|
Профиль | Отправить PM | Цитировать Цитата greenOwl:
|
||
------- Отправлено: 14:46, 04-07-2013 | #5 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать в таком случае, можно кинуть ссылку на винду 7 и не париться
![]() нет, хочется, что бы было без установок дополнительного ПО ... |
Отправлено: 14:51, 04-07-2013 | #6 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать @Echo Off cls Set "DelDate=20140713" SetLocal EnableExtensions EnableDelayedExpansion FOR /F "usebackq delims=" %%i IN (`Dir /B /T:C /A:D *.* 2^>nul`) DO ( Set DDir=%%~ti Set DDir=!DDir:~6,4!!DDir:~3,2!!DDir:~0,2%! If !DDir! LSS %DelDate% @echo Rd "%%i" /S /Q ) Батник в корне той папки, где удаляем подпапки. Для реального удаления уберите @echo перед RD |
------- Отправлено: 15:25, 04-07-2013 | #7 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать megaloman, да нет, мне нужно не много переделать именно тот код, который написан в первом сообщении...
просто папки будут содержать названия типа "НазваниеБазы_ддммгггг", а вот сам батник будет формироваться другой программой.... которая будет вносить путь и какой давности папки нужно удалить.... |
Отправлено: 15:50, 04-07-2013 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 16:14, 04-07-2013 | #9 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать Iska, в том и дело, что я это делаю не себя, батник будет формироваться автоматически и прописываться в планировщик заданий... а версию ОС выбирать не приходится, может быть как ХП, так и 7, да еще и прав нужных может не быть... + ценнее будет, если на автомате ничего лишнего в ОС пихаться не будет....
я как бы могу просто сделать для каталога подкаталог с нужным названием, а в нем уже только даты.... но хочется покрасивее... Просто подумал, что если уже алгоритм реализован, будет не сложно в название полного имени добавить пару символов перед переменной даты, но кажется, что это проблема ![]() |
Отправлено: 16:33, 04-07-2013 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Удаление файлов по дате | AlexPebody | Скриптовые языки администрирования Windows | 6 | 25-07-2013 16:33 | |
CMD/BAT - Удаление файлов по дате | interminable | Скриптовые языки администрирования Windows | 1 | 07-06-2012 15:48 | |
CMD/BAT - [решено] Удаление файлов по дате больших размеров. | Sony777 | Скриптовые языки администрирования Windows | 11 | 03-06-2012 16:23 | |
CMD/BAT - [решено] Удаление папки по дате | Obnin | Скриптовые языки администрирования Windows | 8 | 14-12-2011 13:21 | |
CMD/BAT - Удаление файлов по дате | ADGJMPTW | Скриптовые языки администрирования Windows | 1 | 10-10-2010 20:08 |
|