 |
|
работа с schtasks
Привет есть такой код
Код:
@echo off
color 1a
mode con: cols=54 lines=22
echo.
echo -----------------------------------------------
echo Обновление CONS+ и отправка отчета v1.4
echo -----------------------------------------------
echo.
echo.
rem проверяем интернет
ping mail.ru -n 1 >Nul
if ErrorLevel 1 (
em определяем дату и время
set day=%DATE:~0,2%
set month=%DATE:~3,2%
set year=%DATE:~6,4%
set /A hour=%TIME:~0,2%+1
set minute=%TIME:~3,2%
set ddmmyyyy=%day%/%month%/%year%
set hhmm=%hour%:%minute%
schtasks /create /tn "\админ\update_k+" /tr "D:\Consultant\cons_otchet_work.cmd" /sc once /st "%hhmm%" /sd "%ddmmyyyy%"
exit
)
rem вычисляем день недели
set /a y=%date:~6,4%
set /a m=1%date:~3,2%-100
set /a d=1%date:~0,2%-100
set /a i=(%y%-1901)*365 + (%y%-1901)/4 + %d% + (!(%y% %% 4))*(!((%m%-3)^&16))
set /a i=(%i%+(%m%-1)*30+2*(!((%m%-7)^&16))-1+((65611044^>^>(2*%m%))^&3))%%7+1
rem если вторник то обновляем и отправляем отчет
if "%i%"=="2" (
echo Сегодня %i% день обновление + отправка отчета
<nul set /p sVar= Обновляем Консультант+ -
>nul start /wait /min D:\Consultant\cons.exe /adm /base* /receive_inet /yes && echo OK || echo ER
<nul set /p sVar= Копируем файлы в temp -
>nul copy D:\Consultant\RECEIVE\*.usr D:\Consultant\temp
>nul xcopy D:\Consultant\ADM\STS D:\Consultant\temp\STS /I && echo OK || echo ER
<nul set /p sVar= Архивируем данные для отправик -
>nul C:\progra~1\7-Zip\7z.exe a D:\Consultant\temp\yake.7z -r D:\Consultant\temp\ && echo OK || echo ER
<nul set /p sVar= Отправляем отчет -
>null C:\blat\full\blat.exe -server mail.nic.ru -f a@komenergo.ru -u a@komenergo.ru -pw -tf C:\blat\full\sendlist.txt -subject yake -body "Юзерка от ЯКЭ." -attach D:\Consultant\temp\yake.7z && echo OK || echo ER
<nul set /p sVar= Очищаем папку Temp -
>nul del /f /q D:\Consultant\temp
>nul del /f /q D:\Consultant\temp\STS && echo OK || echo ER
echo CONS+ обновлен отчет отправлен -OK
if exist C:\Windows\System32\Tasks\админ\update_k+.* (
schtasks /delete /tn "\админ\update_k+" /F)
) else (
echo Сегодня %i% день обновление
<nul set /p sVar= Обновляем КОНС+ -
start /wait /min D:\Consultant\cons.exe /adm /base* /receive_inet /yes && echo OK || echo ER
if exist C:\Windows\System32\Tasks\админ\update_k+.* (
schtasks /delete /tn "\админ\update_k+" /F)
)
pause
если в нем создаю задания для планировщика заданий то он ругается на дату и время, а если эту часть скопировать в пустой скрипт то все отлично создает
отдельно все ок
[/code]
rem проверяем интернет
ping mail.ru -n 1 >Nul
if ErrorLevel 1 (
em определяем дату и время
set day=%DATE:~0,2%
set month=%DATE:~3,2%
set year=%DATE:~6,4%
set /A hour=%TIME:~0,2%+1
set minute=%TIME:~3,2%
set ddmmyyyy=%day%/%month%/%year%
set hhmm=%hour%:%minute%
schtasks /create /tn "\админ\update_k+" /tr "D:\Consultant\cons_otchet_work.cmd" /sc once /st "%hhmm%" /sd "%ddmmyyyy%"
exit
[/code]
подскажите в чем моя рукажопость
|
"%hhmm%" /sd "%ddmmyyyy%" это я уже по разному пробовал, а так писал %hhmm% /sd %ddmmyyyy%
|
Ubiquiti, В справке написано, что нельзя использовать /sc once с /sd
Код:
/SD <дата_начала> Дата первого запуска задачи. Формат:
dd/mm/yyyy. По умолчанию используется текущая
дата. Этот параметр неприменим для следующих типов расписания: ONCE,
ONSTART, ONLOGON, ONIDLE, ONEVENT.
|
Тогда почему если кусок кода выполнять отдельно то все работает, а если вставить в код в тот что Я предоставил в самом начале то не работает
Код:
schtasks /create /tn "\test\123" /tr "E:\ScriptPS\cmd\interfeis.cmd" /sc once /st 20:30 /sd 22/02/2016
вот такой код создает задачу которые один раз 22 числа в 20-30 запускает задачу
|
Ubiquiti, Проверьте ваши вычисления, возможно там ошибка. День недели проще узнать через wmi:
Код:
@echo off
setlocal
set "wmic=wmic path win32_localtime get dayofweek /value"
for /f %%i in ('"%wmic%"') do 1>nul set "%%i"
if %dayofweek% equ 2 echo вторник
|
странно!!! может как не будь хитро переменную подсунуть и .Вы не на ту часть кода смотрите та часть которые Вы привели в пример работает отлично
вот с этой частью проблема
Код:
rem проверяем интернет
ping mail.ru -n 1 >Nul
if ErrorLevel 1 (
em определяем дату и время
set day=%DATE:~0,2%
set month=%DATE:~3,2%
set year=%DATE:~6,4%
set /A hour=%TIME:~0,2%+1
set minute=%TIME:~3,2%
set ddmmyyyy=%day%/%month%/%year%
set hhmm=%hour%:%minute%
schtasks /create /tn "\админ\update_k+" /tr "D:\Consultant\cons_otchet_work.cmd" /sc once /st "%hhmm%" /sd "%ddmmyyyy%"
exit
)
|
Ubiquiti, Либо пропишите setlocal enabledelayedexpansion или уберите блок кода из скобок:
Код:
ping mail.ru -n 1 | 1>nul findstr "TTL=" || goto:eof
rem определяем дату и время
....
|
предлагаете через goto сделать (ой как не люблю goto отбили желания давно)
ок буду пробовать готовые код выложу мож кому пригодиться в хозяйстве
|
Спасибо Foreigner за помощь в setlocal enabledelayedexpansion почитал просветился все заработало. Вот код
Код:
Setlocal EnableDelayedExpansion
@echo off
какой-то код
<nul set /p sVar= На компьютере интернет
> null ping www.ru
If !ErrorLevel! == 0 (
echo - NO
rem определяем дату и время
set /A hour=%TIME:~0,2%+1
set DDMMDYYYY=%DATE:~0,2%/%DATE:~3,2%/%date:~6,4%
set HHMM=!hour!:%TIME:~3,2%
rem создаем задачу
schtasks /create /tn "\test\tuc+" /tr "E:\ScriptPS\cmd\interfeis.cmd" /sc once /st !HHMM! /sd !DDMMDYYYY!
pause
exit
)
какой-то код
|
Наверное правильнее было бы эту строку записать так:
Код:
set HHMM=!hour:24=0!:%TIME:~3,2%
.
|
Цитата:
Цитата alpap
Наверное правильнее было бы эту строку записать так: »
|
да все в принципе заработало есть пару косяков, но все равно планирую переписать код на PoSH потому что когда много переменных трудно в cmd работать и хочу еще пару моментов реализовать
|
Время: 16:00.
© OSzone.net 2001-