Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Скрипт планировщика задач (http://forum.oszone.net/showthread.php?t=228346)

Laos 20-02-2012 22:22 1863043

Скрипт планировщика задач
 
Здравствуйте!
Очень нужно написать скрипт в cmd используя средства schtasks. Сам я понятия не имею как сделать это, но излагаю суть.
1. Сам батник может лежать в любой папке.
2. При перетаскивании на него любого другого скрипта, он должен запускать этот скрипт с периодичностью в час.
3. Результат исполняемого скрипта (на выходе текстовик) должен кидаться туда, ОТКУДА был перетащен скрипт.

Пример: исполняемый скрипт "script.bat" лежит в директории C:\. Если его исполнить, то на выходе будет файл "result.txt", который лежит тоже в C:\. Скрипт планировщика "scheduler.bat" лежит на D:\. Так вот если на него с одного диска (C:\) переносить "script.bat", чтобы в той же директории (C:\) появлялся "result.txt".

Может кто помочь?
Или это проще в powershell сделать?
Спасибо

Iska 20-02-2012 23:31 1863097

Цитата:

Цитата Laos
он должен запускать этот скрипт с периодичностью в час. »

До каких пор? До перезагрузки машины?

Цитата:

Цитата Laos
Результат исполняемого скрипта (на выходе текстовик) »

Каким образом создаётся этот текстовый файл? Буквально. И что делать в момент очередного ежечасного запуска с новым текстовым файлом?

Цитата:

Цитата Laos
Или это проще в powershell сделать? »

Язык несущественен.

Laos 21-02-2012 09:52 1863300

1. Да, до перезагрузки
2. Текстовик создается командой вывода в ту же папку, где скрипт ">> result.txt". Т.е. при следующем запуске скрипта должна быть дозапись в файл

Собственно, там проблема с рабочей папкой. Планировщик должен каким-то образом прописывать рабочую папку для каждого исполняемого скрипта

Iska 21-02-2012 11:57 1863374

Laos, я пока не вижу необходимости использовать планировщик.

Цитата:

Цитата Laos
1. Сам батник »

читать дальше »
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sFile=%~1
set sPath=%~dp1

if defined sFile (
        if exist "%sFile%" (
                :Loop
                call "%sFile%">>"%sPath%result.txt"
                >nul ping.exe -n 3601 127.0.0.1
                goto :Loop
        ) else (
                echo File [%sFile%] not found
        )
) else (
        echo Usage: "%~nx0" ^<Path to file^>
)

endlocal
exit /b 0



Цитата:

Цитата Laos
2. При перетаскивании на него любого другого скрипта »

Пример такого пакетного файла:
читать дальше »
Код:

@echo %date% %time% : [%~0]

Laos 21-02-2012 12:22 1863400

Хм... а как тогда задать нужную периодичность? И как вообще с этим скриптом работать? =)

Iska 21-02-2012 12:35 1863417

Периодичность задаётся в:
Код:

>nul ping.exe -n 3601 127.0.0.1
как потребное число секунд +1.

Цитата:

Цитата Laos
И как вообще с этим скриптом работать? »

Так, как Вы и писали — перетащить на этот пакетный файл любой другой пакетный файл. Результатом работы этого «другого» пакетного файла будет дополнен файл «result.txt» в папке размещения этого самого «другого» пакетного файла. Затем будет выдержана пауза в 1 час. Затем опять будет запущен «другой» пакетный файл, результат работы будет добавлен к файлу «result.txt», новая часовая пауза и т.д. до перезагрузки машины или закрытия основного пакетного файла.

Laos 21-02-2012 12:40 1863422

Iska, спасибо!

Laos 21-02-2012 15:46 1863588

Хм.. перетаскивание powershell скрипта не работает - открывает этот скрипт в блокноте.
Как нибудь реально убрать вывод файла result.txt? Просто есть куча скриптов, у которых есть различные выводы.

Iska 21-02-2012 17:14 1863673

Цитата:

Цитата Laos
Хм.. перетаскивание powershell скрипта не работает - открывает этот скрипт в блокноте. »

Laos, я полагал, речь идёт именно о пакетных файлах (запуск скриптов PowerShell имеет свои специфические особенности). А Вы?

Цитата:

Цитата Laos
Как нибудь реально убрать вывод файла result.txt? Просто есть куча скриптов, у которых есть различные выводы. »

Поясните Вашу мысль.

Laos 21-02-2012 17:54 1863704

Ну на самом деле меня больше интересует скрипт планировщика для PowerShell скриптов. Моя вина.
Когда я например, выполняю .bat файл в котором просто описана инструкция:
Код:

@echo off
set a=1
echo %a% >> 1.txt

то результатом является файл 1.txt в который постоянно дописывается единица, но так же появляется файл result.txt, который описан в скрипте скедулера

Iska 21-02-2012 18:08 1863716

Цитата:

Цитата Laos
Ну на самом деле меня больше интересует скрипт планировщика для PowerShell скриптов. »

Ясно.

Цитата:

Цитата Laos
Когда я например, выполняю .bat файл в котором просто описана инструкция … то результатом является файл 1.txt в который постоянно дописывается единица, но так же появляется файл result.txt, который описан в скрипте скедулера »

То есть, Вы реализуете вывод в файл изнутри этого «другого» пакетного файла. Тогда я, мягко говоря, не представляю, как можно перенаправить куда-либо уже перенаправленный в файл вывод. Если б Вы ещё согласились указывать файл для вывода посредством параметра при вызове «другого» пакетного файла:
Код:


call "%sFile%" "%sPath%result.txt"

и, соответственно, в «другом» пакетном файле:
Код:

@echo %date% %time% : [%~0]>>"%~1"
— тогда б было можно.

Laos 21-02-2012 18:17 1863722

Ладно, придется что-то другое придумать. Iska, Спасибо большое за старания!

bredych 12-10-2018 17:28 2835616

кто б напомнил, как обзывается евент логина?
Без указания, какого конкретно юзера (юзера разные, компы не всегда выключаются ночью)

Понятно, что в параметрах schtasks /SC onevent , но какой задать?
Ползание по гуглу дало несколько разных вариантов, ползание по евент вьюеру своей машины вообще ни одного такого события в период логина не дало, потому сижу, чешу репу.
зы, идея однократной задачи в планировщике возникла как попытка костыля в связи с отсутствием идей более логичного и до сих пор работавшего метода


Время: 20:53.

Время: 20:53.
© OSzone.net 2001-