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

Показать сообщение отдельно

Ветеран


Contributor


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

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


Цитата:
в директории D:\STOPotchet\rar\ каждый день создается папка, с названием %DATE:~0,2%%DATE:~3,2%%DATE:~8,2%. А проверку нужно запускать для предыдущего РАБОЧЕГО дня.
При условии, что сегодня папка уже создана, а надо взять вчерашнюю (точнее - за предыдущий раб день), и в директории D:\STOPotchet\rar\ нет лишних поддиректорий, не связанных с датами, вот решение без каких-либо служебных файлов
Код: Выделить весь код
@Echo Off

Set Where=D:\STOPotchet\rar\

FOR /F "usebackq skip=1 delims=" %%D IN (`Dir "%Where%" /B /A:D /O:-D /T:C`) DO Set DirName=%Where%%%D\& GoTo :Continue
:Continue

Echo %DirName%
Как это работает: Команда Dir с применёнными ключами выдаёт список поддиректорий отсортированных по дате создания (вначале самая свежая), For в этом списке пропускает первую поддиректорию ("сегодняшняя") и при исполнении присваивает переменной %DirName% полный путь предыдущей по списку директории ("вчерашней").

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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 06-05-2013 в 11:47.


Отправлено: 11:40, 06-05-2013 | #5