|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Проверка наличия файла с текущей датой и выполнения дальнейших команд. |
|
CMD/BAT - [решено] Проверка наличия файла с текущей датой и выполнения дальнейших команд.
|
Новый участник Сообщения: 3 |
Доброго дня.
Если не трудно, нужна помощь в написании скрипта. Темы похожие по сути просматривал, но у меня свои нюансы и коды с этих тем не подходят/не работают с моим кривым видоизменением. Сама задача: В удаленную папку вида \\storage\123\123 каждый день падают архивы вида backup_XX.rar, где XX - число месяца на день архивации. Нужен скрипт проверяющий на момент своего запуска, что за данный день туда упал архив с текущей датой и в случае удачи запускал определенный батник, в случае неудачи - другой. Заранее спасибо. |
|
Отправлено: 18:20, 26-06-2018 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата VoidSteel:
На WSH: Option Explicit Dim strSourceFolder strSourceFolder = "\\storage\123\123" With WScript.CreateObject("Scripting.FileSystemObject") If .FolderExists(strSourceFolder) Then If .FileExists(.BuildPath(strSourceFolder, "backup_" & Right("00" & CStr(Day(Now())), 2) & ".rar")) Then WScript.CreateObject("WScript.Shell").Run """%comspec%"" /c""c:\My Path\My batch1.cmd""", 1, True Else WScript.CreateObject("WScript.Shell").Run """%comspec%"" /c""c:\My Path\My batch2.cmd""", 1, True End If Else WScript.Echo "Can't find source folder [" & strSourceFolder & "]." WScript.Quit 2 End If End With WScript.Quit 0 |
|
Отправлено: 22:50, 26-06-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата VoidSteel:
Ну а сравнение числа в имени файла с текущим числом: но это с допущением того, что формат вывода даты в системе: dd.MM.yyyy |
|
------- Отправлено: 09:12, 27-06-2018 | #3 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Не надо задумываться о цифрах в имени бэкапов, сравним дату изменения самого свежего файла с сегодняшней
@Echo Off cls Set "BoxIn=\\storage\123\123" Set "Mask=backup_??.rar" Set /A Today=0 Pushd "%BoxIn%" &&( FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D /O:-D /T:W`) DO Call :Logica %Date% %%~tf &GoTo :Continue :Continue Popd ) If %Today%==1 (Call :Today1) Else (Call :Today0) pause GoTo :Eof :Logica Set /A Today=0 If %1==%2 Set /A Today=1 GoTo :Eof :Today0 Echo today backup not exists GoTo :Eof :Today1 Echo today backup exists GoTo :Eof |
------- Последний раз редактировалось megaloman, 27-06-2018 в 14:36. Отправлено: 14:29, 27-06-2018 | #4 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Извиняюсь не совсем полностью и корректно обрисовал задачу.
Вы правы, подразумевалось сравнение числа в имени файла с текущим числом месяца. Формат вывода даты в системе по умолчанию win server 2008 r2. Интересует именно код под bat файл. Путем моих кривых совмещений с утилитой blat вышло следующее: @echo off set "fld=\\STORAGE\123\123" set "day=%date:~,2%" pushd "%fld%" for /f "tokens=2 delims=_." %%a in ('dir /b/a-d "*.rar"') do if %day% equ %%a ( rem *** Путь к программе blat.exe *** set file_blat=C:\Users\123\Desktop\Blat\blat.exe rem *** Путь к файлу с текстом сообщения *** set file_text=C:\Users\123\Desktop\Blat\reportok.txt rem *** Путь к файлу для сохранения лога *** set file_log=C:\Users\123\Desktop\Blat\Blat.txt rem *** Путь к файлу с адресами получателей *** set file_to=C:\Users\123\Desktop\Blat\mail_list.txt rem *** Тема сообщения *** set to_subject="backed up OK!" rem *** Данные отправителя *** set from_server=mail.123.ru set from_port=25 set from_mail=123@123.ru set from_name=123@123.ru set from_pass=123 rem *** Отправка сообщения *** %file_blat% %file_text% -server %from_server%:%from_port% -f %from_mail% -u %from_name% -pw %from_pass% -tf %file_to% -s %to_subject% -log %file_log% pause) else ( rem *** Путь к программе blat.exe *** set file_blat=C:\Users\123\Desktop\Blat\blat.exe rem *** Путь к файлу с текстом сообщения *** set file_text=C:\Users\123\Desktop\Blat\reportfail.txt rem *** Путь к файлу для сохранения лога *** set file_log=C:\Users\123\Desktop\Blat\Blat.txt rem *** Путь к файлу с адресами получателей *** set file_to=C:\Users\123\Desktop\Blat\mail_list.txt rem *** Тема сообщения *** set to_subject="backup FAIL!" rem *** Данные отправителя *** set from_server=mail.123.ru set from_port=25 set from_mail=123@123.ru set from_name=123@123.ru set from_pass=123 rem *** Отправка сообщения *** %file_blat% %file_text% -server %from_server%:%from_port% -f %from_mail% -u %from_name% -pw %from_pass% -tf %file_to% -s %to_subject% -log %file_log% pause) popd Тестировал с и без актуального файла, в любом случае скрип выдает что файла на месте нету. |
|
Отправлено: 14:47, 27-06-2018 | #5 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Пока писал пост, пришел новый вариант от megaloman. :-)
С этим кодом все корректно работает, премного благодарен. Спасибо всем, кто потратил на решение данного вопроса свое время. |
Отправлено: 15:58, 27-06-2018 | #6 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата VoidSteel:
Цитата VoidSteel:
Цитата VoidSteel:
Цитата:
|
||||
------- Отправлено: 18:58, 27-06-2018 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Копирование на ftp файла с текущей датой | Gooks | Скриптовые языки администрирования Windows | 0 | 14-06-2018 14:38 | |
CMD/BAT - [решено] Логирование выполнения команд с датой и временем | Pank | Скриптовые языки администрирования Windows | 5 | 28-11-2017 16:53 | |
CMD/BAT - архивирование файла с текущей датой | mcintosh55 | Скриптовые языки администрирования Windows | 1 | 22-12-2014 20:09 | |
CMD/BAT - Сранение даты из файла с текущей датой | InVariable | Скриптовые языки администрирования Windows | 0 | 07-02-2012 11:53 | |
CMD/BAT - [решено] Проверить наличие файла с текущей датой. | OlegStarov | Скриптовые языки администрирования Windows | 4 | 21-04-2009 12:11 |
|