|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] %DATE% минус рабочий день. |
|
CMD/BAT - [решено] %DATE% минус рабочий день.
|
Новый участник Сообщения: 6 |
Добрый день,
Есть две директории одна( D:\STOPotchet\rar\ ) с архиво, другая (D:\STOPotchet\rar\date с фаилом подтверждений для архива. Необходимо при отсутствии файла подтверждений для соответствуещего архива, запускать скрипт. Вот что у меня вышло для статических папок, проверка работает. Проблема в том что эту проверку нужно запускать каждый день. в директории D:\STOPotchet\rar\ каждый день создается папка, с названием %DATE:~0,2%%DATE:~3,2%%DATE:~8,2%. А проверку нужно запускать для предыдущего РАБОЧЕГО дня. Может кто идей подкинет? @echo off if %1.==. exit SET FDIR=D:\STOPotchet\rar\ "C:\Program Files\WinRAR\rar.exe" x D:\STOPotchet\*.rar TRAFN*.arj D:\STOPotchet\rar\%DATE:~0,2%%DATE:~3,2%%DATE:~8,2%\ echo -------------------------------------------------------------------------------------------------- : проверим все ли отправили что подготовили for %%i in (D:\STOPotchet\rar\%DATE:~0,2%%DATE:~3,2%%DATE:~8,2%\*.arj) do call :ch %%~nxi goto end :ch SET FTRAFN=%1 SET FIZV=IZV_%FTRAFN:~6,12%.txt echo %DATE% %TIME% - %FTRAFN% - ищем %FIZV% if not exist %FDIR%\%FIZV% ( N:\send_psi.vbs "ALARM" echo %DATE% %TIME% - %FTRAFN% - ALARM ) exit /b goto end :------------------------------------------------------------------------------- :end |
|
Отправлено: 16:36, 30-04-2013 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Если кто не понял. Тут D:\STOPotchet\izv\ создаются папки вида 010203(дата)
Необходимо что бы тут SET FDIR=D:\STOPotchet\rar\ каким то образом выбиралась папка с датой предыдущего рабочего дня. |
Отправлено: 16:39, 30-04-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Есть очень простое решение. Для начала вручную создаём файл Date.log и вписываем в него вчерашнюю дату в нужном формате. Далее:
@ECHO OFF FOR /F %%I IN (Date.log) DO ( IF NOT %%I==%DATE:~0,2%%DATE:~3,2%%DATE:~8,2% ( SET FDIR=D:\STOPotchet\rar\%%I ) ELSE EXIT ) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::Здесь необходимые операции::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::Переписывем LOG-файл, заменяя дату на текущую (на следущий день она станет вчерашней):::: ECHO %DATE:~0,2%%DATE:~3,2%%DATE:~8,2%>Date.log |
Отправлено: 23:32, 30-04-2013 | #3 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Спасибо огромное, это то что мне было нужно! Все заработало.
|
Отправлено: 10:11, 06-05-2013 | #4 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Цитата:
@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% При таком подходе обработку можно запускать хоть несколько раз, в случае же с лог-файлом после того, как он перепишется, информация о вчерашнем имени теряется и батник будет работать неправильно. |
||
------- Последний раз редактировалось megaloman, 06-05-2013 в 11:47. Отправлено: 11:40, 06-05-2013 | #5 |
Пользователь Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать Вот функция, которая показывает вчерашнюю дату:
@echo off ::Показать дату, которая была 1 день назад call :fromnow -1 echo %ddmmyyyy% pause>nul goto :eof :FromNow setLocal set now=%date% set /a yyyy=%now:~-4% set /a mm=1%now:~3,2%-100 set /a dd=1%now:~,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 ddmmyyyy=%dd:~-2%.%mm:~-2%.%yyyy% exit /b |
------- Отправлено: 17:46, 06-05-2013 | #6 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Diskretor, Спасибо добрый человек, может пригодится, но для моих целей не подходит. Потому что в понедельник надо проверять папку за пятницу.
|
Отправлено: 09:56, 08-05-2013 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] текущая дата минус один день. | dvassilyev | Скриптовые языки администрирования Windows | 19 | 29-09-2021 19:19 | |
Обновленные Apple MacBook Pro: минус SSD, плюс Thunderbolt | OSZone News | Новости железа | 0 | 24-02-2011 20:30 | |
CMD/BAT - [решено] формат даты для имени нового архива %date:~6,4%\%date:~3,2%\%~n1_%date:~0,2% | RUVATA | Скриптовые языки администрирования Windows | 5 | 05-08-2010 08:43 | |
Заглушить звук саксофона в аудиофайле, чтобы оставить только минус. | Drem | Хочу все знать | 4 | 16-04-2010 17:19 | |
"День 7" - на носу: Windows 7 осталось ждать один день | OSZone News | Новости и события Microsoft | 0 | 21-10-2009 12:30 |
|