Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/26: Рейтинг темы: голосов - 26, средняя оценка - 4.69
4 / 4 / 4
Регистрация: 14.11.2010
Сообщений: 31
1

Удаление самой старой папки

14.05.2012, 21:23. Показов 4746. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть задание:
скрипт копирует папку с промежутком в минуту. После 6 раза, он удаляет самую старую папку из скопированных и продолжает работу (т.е. всегда есть 6 копий). Папки имеют вид Date#Hour.Min
У меня возникли сложности с этим самым удаление. То, что у меня получилось, практически работает, но в какой-то момент сходит с ума и удаляет всё подряд. Вот этот код
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@echo off 
::bobj - откуда копируется
set bobj=c:\test
::bfld - куда копируется  
set bfld=d:\backup\
set /A st=1
 
:loop 
 IF %st% LEQ 6 set /A st=%st%+1
 IF %st% GTR 6 (
    dir %bfld% /A:D /B /O:-N >one.txt
    for /f "tokens=*" %%I in (one.txt) do set FILEN=%%~I
    set delw=%bfld%\%FILEN%
    echo %delw%
    erase one.txt 
    rd %delw% /q /s
    )
Set Hour=%Time:~0,2%
Set Min=%Time:~3,2% 
set f_way=%bfld%\%date%#%Hour%.%Min%
xcopy %bobj% %f_way% /E /C /K /Y /I /Q
ping -n 60 127.0.0.1 > NUL
goto loop
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.05.2012, 21:23
Ответы с готовыми решениями:

Удаление файлов из папки
Помогите пожалуйста, вот написал батник для удаление всех файлов из указанной папки del...

Автоматизировать удаление папки
Всем привет! Нужно автоматизировать удаление заданной папки (заданной именем) из другой папки (и...

Удаление файлов из папки
всем привет, у меня такая задачка: на диске есть папка(мы знаем к ней путь), в этой папке хранятся...

Запрет на удаление папки
Доброго! Может кто подскажет как в Windows 7 сделать полный доступ к папке и ее содержимому, кроме...

5
4 / 4 / 4
Регистрация: 14.11.2010
Сообщений: 31
05.06.2012, 15:01  [ТС] 2
В итоге проблема решилась внедрением в скрипт ещё одного срипта на Visal Basic Script, который ,собственно, и сортировал по дате создания и удалял старые папки.
Профит такого решения в отличии от часто предлагаемых PowerShell, расширений из ресурс кита(foreach.exe), и левых скриптовых языков:
+ переносимость - не требует ничего дополнительно, всё необходимое есть в стандартных сборках WinXP ( Win03) и выше
+ простота - легко изменить или дополнить

Код основного скрипта:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@echo off 
::bobj - откуда копируется
set bobj=c:\test
::bfld - куда копируется    
set bfld=d:\backup\
set /A st=1
 
:loop 
::  необходимо для корректонй работы вспомогательного скрипта       
echo %bfld% > c:\bfld.txt
:: скрипт 1.vbs занимается удаление папок устаревших, более чем на 6 минут
IF %st% GTR 6 1.vbs
erase c:\bfld.txt
IF %st% LEQ 6 set /A st=%st%+1
Set Hour=%Time:~0,2%
Set Min=%Time:~3,2% 
set f_way=%bfld%\%date%#%Hour%.%Min%
xcopy %bobj% %f_way% /E /C /K /Y /I /Q
ping -n 60 127.0.0.1 > NUL
goto loop
И код вспомогательного (возможно говнокод, но свою задачу выполняет):
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dim fso, fin
set fso = createobject("scripting.filesystemobject")
 
set fin = fso.OpenTextFile("c:\\bfld.txt", 1)
  f = fin.ReadLine
  fin.Close
  
set dir = fso.GetFolder(f)
set sf = dir.SubFolders 
 
for each folder in sf
If datediff("n",Folder.DateCreated, Now) > 5 Then
fso.DeleteFolder folder.path, True
End If
next
0
14 / 14 / 1
Регистрация: 10.11.2011
Сообщений: 77
05.06.2012, 15:36 3
Вы могли проще сделать (у меня недавно была похожая проблемка)
командой:
Bash
1
dir %bfld% /A:D /B /O:D >one.txt
вы бы получили список каталогов при чем первым в списке был бы самый старый. Ну а далее нехитрые приемы for /f и готово!!!
0
4 / 4 / 4
Регистрация: 14.11.2010
Сообщений: 31
05.06.2012, 18:31  [ТС] 4
freezstyle, сначала я там и делал, но когда он начал терять имена папок в переменных, я заменил его
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
05.06.2012, 20:20 5
Цитата Сообщение от Azazzelo Посмотреть сообщение
он начал терять имена папок в переменных
Вероятно, не прописали кавычки или кодовую страницу ANSI.
0
14 / 14 / 1
Регистрация: 10.11.2011
Сообщений: 77
07.06.2012, 11:01 6
Azazzelo, очень странная ситуация у вас, но решение вроде очень простое можно было обойтись без вспомогательного кода! Потерии имен папок в переменных это точно вы пропустили кавычки, сам с такой бедой сталкивался))
0
07.06.2012, 11:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.06.2012, 11:01
Помогаю со студенческими работами здесь

Ватник на удаление папки
Всем привет!!! Подскажите как можно удалить папки (с помощью bat) с таким именем -...

Удаление содержимого папки
Друзья у меня идиотская проблема, нужно тупо очистить папку батником, пишу RMDIR C:\32423 /q /s...

Удаление заданной папки
Здравствуйте. Помогите написать файл для удаления папки TEST и её содержимого по пути ...

Удаление папки со вчерашней датой
есть необходимость ежедневно удалять папку со вчерашней датой, подскажите что нужно сделать!!!!:(...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru