Компьютерный форум 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=217051)

sov44 03-10-2011 13:47 1764907

создать задание в планировщике ХР по запуску батника
 
Впервые пытаюсь создать задание в планировщике ХР по запуску батника ежемесячно 6 и 10 числа. Ошибки.
Код:

schtasks /create /tn "Моё задание" /tr "%~dp0" /sc daily /mo 6 /sd %Date% /st 13:00:00 /ru System
Буду благодарен за практическую помощь и за инфу по ключам.

Iska 03-10-2011 14:44 1764942

Цитата:

Цитата sov44
/tr "%~dp0" »

Сравните:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

echo %~dp0
echo %~f0

endlocal
exit /b 0

Цитата:

Цитата schtasks.exe /Create /?
Код:

    /TR          программа        Путь и имя файла программы,
                                  которая будет запущена
                                  запланированной задачей.
                                  Пример: C:\windows\system32\calc.exe



sov44 03-10-2011 20:32 1765191

Подскажите, как сделать запуск планировщика каждое 6 число месяца. Не получается:
Код:

schtasks /create /tn "Моё задание" /tr "%~f0" /sc monthly /mo 06 /sd 06/01/2011 /st %time:~0,-3% /ru System
p.s также интересует решение в среде Windows 7

Iska 03-10-2011 21:04 1765212

sov44, попробуйте так:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set TaskId=Моё задание

"%SystemRoot%\system32\schtasks.exe" /Delete /tn "%TaskId%" /f && ^
"%SystemRoot%\system32\schtasks.exe" /Create /tn "%TaskId%" /tr "%~f0" /sc Monthly /d 6 /sd "06/01/2011" /st "%time:~0,-3%" /ru "NT AUTHORITY\SYSTEM"

endlocal
exit /b 0


sov44 03-10-2011 21:58 1765255

Iska, я так понимаю, скрипт в посте 3 для Windows 7 ?
Поясните, для чего удалять, а потом создавать задание? Неужели нельзя каждый раз в цикле "накатывать" задание "сверху"?

Iska 03-10-2011 23:10 1765305

Цитата:

Цитата sov44
Iska, я так понимаю, скрипт в посте 3 для Windows 7 ?»

Вам виднее — это Ваш пост. Я ориентировался на:
Цитата:

Цитата sov44
CMD/BAT - [решено] создать задание в планировщике ХР по запуску батника »

Вашу правку:
Цитата:

Цитата sov44
p.s также интересует решение в среде Windows 7 »

не видел. Если в Windows 7 есть отличия — Вы их сможете прочитать сами. У меня нет Windows 7.

Цитата:

Цитата sov44
Поясните, для чего удалять, а потом создавать задание? Неужели нельзя каждый раз в цикле "накатывать" задание "сверху"? »

Вы пробовали? Я попробовал создавать, не удаляя:
Цитата:

СВЕДЕНИЯ. Запланированная задача "Моё задание" будет создана под именем пользователя ("NT AUTHORITY\SYSTEM").
ОШИБКА: Указанное имя задания уже существует в этой системе.

sov44 06-10-2011 23:40 1767721

Подскажите, как дополнить скрипт
Код:

schtasks /create /tn "Моё задание" /tr "%~f0" /sc Monthly /d 6 /sd 06/01/2011 /st 13:05:00 /ru System
чтобы:
- путь к исполняемому файлу прописывался в кавычках.
- прописывался путь к рабочей папке в кавычках
- задание запускалось от имени пользователя
- задать существующий пароль\подтверждение пользователя. При отсутствии пароля пользователя, задать его и снять галочку пользователя в control userpasswords2 для автоматического входа в систему.

Заметил, что без этих изменений скрипт не отрабатывает.

Iska 07-10-2011 02:28 1767768

Цитата:

Цитата sov44
- путь к исполняемому файлу прописывался в кавычках. »

Экранировать передаваемые в утилиту кавычки обратным слэшем:
Код:

"%SystemRoot%\system32\schtasks.exe" /Create /tn "%TaskId%" /tr "\"%~f0\""
Цитата:

Цитата sov44
- прописывался путь к рабочей папке в кавычках »

Я не нашёл никаких способов управлять этим параметром из «schtasks.exe». Заданное поведение — рабочая папка берётся из пути к файлу, и — точка! Увы.

Ранее было предложено, как минимум, два обходных пути: Проблема с планировщиком, как передать рабочую папку.
Цитата:

Цитата sov44
- задание запускалось от имени пользователя »

Если текущего пользователя — просто не указывать никаких праметров, относящихся к именам/паролям. Пароль будет запрошен при создании задания. Если пользователь не текущий — указать /ru "[Domain\]UserName". Пароль также будет запрошен при создании задания.
Цитата:

Цитата sov44
При отсутствии пароля пользователя, задать его »

См. выше.
Цитата:

Цитата sov44
и снять галочку пользователя в control userpasswords2 для автоматического входа в систему. »

Какую «галочку пользователя»? «Требовать ввод имени пользователя и пароля»? Зачем?! Для исполнения задания вход в систему не обязателен, если иное не указано в свойствах задания.

Опишите, что именно Вы хотите запустить, и условия применения.

sov44 07-10-2011 07:26 1767802

Цитата:

Цитата Iska
Если текущего пользователя — просто не указывать никаких праметров, относящихся к именам/паролям. Пароль будет запрошен при создании задания. Если пользователь не текущий — указать /ru "[Domain\]UserName". Пароль также будет запрошен при создании задания. »

Без пароля планировщик не работает. Пароль в планировщике должен соответствовать паролю входа в систему.
Цитата:

Цитата Iska
Какую «галочку пользователя»? «Требовать ввод имени пользователя и пароля»? Зачем?! »

Для исполнения задания вход в систему не нужен, однако думаю вперёд: для чего делать лишние телодвижения при включении компьютера?
Цитата:

Цитата Iska
что именно Вы хотите запустить »

командный файл на основе поста 7 из http://forum.oszone.net/thread-216913-1.html

Iska 07-10-2011 15:02 1768044

sov44, сожалею, но я перестал понимать Вас.

sov44 08-10-2011 00:30 1768422

Путь к исполняемому файлу в кавычках и путь к рабочей папке в кавычках прописался одним ключом /tr "\"%~f0\""
Запуск задания от имени пользователя /ru username
Установленный пароль определил с помощью Network Password Recovery
Код:

@echo off
SetLocal enabledelayedexpansion
netpass.exe /Stext 11.txt
for /f "usebackq tokens=2 delims=:" %%a in (`type "11.txt"^|find.exe "Password    "`) do set pas=%%a
Echo %pas:~1%
pause

к сожалению пока не получается прописать его в планировщик...

Iska 08-10-2011 07:48 1768494

Цитата:

Цитата sov44
Установленный пароль определил с помощью Network Password Recovery »

Отчего так?

sov44 08-10-2011 13:52 1768658


Цитата:

Цитата Iska
Отчего так? »

Теперь я Вас не понимаю. Есть другие вариатны решения или так, пофлудим?

Iska 08-10-2011 14:54 1768694

Я интересовался, зачем нужно привлекать использование таких средств, и с какой целью это делается?

sov44 08-10-2011 15:21 1768709

Цитата:

Цитата Iska
зачем нужно привлекать использование таких средств, и с какой целью это делается? »

Цитата:

Цитата sov44
- задать существующий пароль »

Без ввода пароля в окне планировщика, задание работать не будет
читать дальше »

Самые распространенные ошибки при создании задачи, которые приводят к незапуску задачи в указанное время или к неудаче при тестовом запуске задачи — неправильно введенные пароль. Не менее часто можно столкнуться с тем, что задача не запускается из-за пустого пароля у учетной записи. Windows 2000, в отличие от Windows XP, запустит задачу из-под учетной записи с пустым паролем. В XP запуск задачи выполнен не будет. Решение этой проблемы — задать пароль для учетной записи и указать его в настройках задачи.
www.ixbt.com/soft/ms-task-scheduler.shtml

Iska 08-10-2011 19:31 1768875

sov44, я понимаю это. Вопрос мой в ином. Попробую перефразировать: зачем нужна такая автоматизация, вместо обычного запроса и ввода пароля? Вы ведь не можете не понимать, что это большая дыра в безопасности, ничем не лучшая, нежели задание пароля в открытом виде.

Впрочем, смотрите сами.

Код может быть таким:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sUserName=User@upn.dom
call :GetTemporaryName

netpass.exe /stab "%TemporaryName%"

for /f "tokens=4 delims=        " %%i in ('findstr.exe /i /r /c:".*        %sUserName%        .*" "%TemporaryName%"') do set sPassword=%%i

del /f /q "%TemporaryName%"

if defined sPassword (
        echo Found Password [%sPassword%] for User [%sUserName%]
) else (
        echo Not found saved password for User [%sUserName%]
)

endlocal
exit /b 0

rem ==========================================================================
rem Функция GetTemporaryName()
rem
rem Серый форум / CMD/BAT: генерация пути для временного файла или папки
rem (http://forum.script-coding.com/viewtopic.php?id=6259)
rem ==========================================================================
:GetTemporaryName
        setlocal enableextensions enabledelayedexpansion

:NextName
        set sTempName=%temp%\temp%random%.tmp

        if exist "%sTempName%" goto :NextName

        set sProcName=%~0

        endlocal & set %sProcName:~4%=%sTempName%
        exit /b 0
rem ==========================================================================


sov44 08-10-2011 21:46 1769012

Iska, скрипт не определил пароль.

Iska 08-10-2011 23:47 1769091

sov44, сдаётся мне, дело в кодировке файла. У Вас имя пользователя/пароль на кириллице?

sov44 09-10-2011 10:09 1769203

Цитата:

Цитата Iska
У Вас имя пользователя/пароль на кириллице? »

Нет. Имя пользователя на английском, пароль цифрами. ;)

Iska 10-10-2011 00:41 1769768

Проверил ещё раз, взяв свой же код с форума и создав сохранённый пароль для пользователя «User@domain.dom»:
читать дальше »
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sUserName=User@domain.dom
call :GetTemporaryName

netpass.exe /stab "%TemporaryName%"

for /f "tokens=4 delims=        " %%i in ('findstr.exe /i /r /c:".*        %sUserName%        .*" "%TemporaryName%"') do set sPassword=%%i

del /f /q "%TemporaryName%"

if defined sPassword (
        echo Found Password [%sPassword%] for User [%sUserName%]
) else (
        echo Not found saved password for User [%sUserName%]
)

endlocal
exit /b 0

rem ==========================================================================
rem Функция GetTemporaryName()
rem
rem Серый форум / CMD/BAT: генерация пути для временного файла или папки
rem (http://forum.script-coding.com/viewtopic.php?id=6259)
rem ==========================================================================
:GetTemporaryName
        setlocal enableextensions enabledelayedexpansion

:NextName
        set sTempName=%temp%\temp%random%.tmp

        if exist "%sTempName%" goto :NextName

        set sProcName=%~0

        endlocal & set %sProcName:~4%=%sTempName%
        exit /b 0
rem ==========================================================================


У меня работает:
Цитата:

Код:

E:\Песочница\0084>0006.cmd
Found Password [1234567890] for User [User@domain.dom]


Может быть, «findstr.exe» под Windows 7 работает иначе? Закомментируйте:
Код:

del /f /q "%TemporaryName%"
добавьте после:
Код:

call :GetTemporaryName
вывод имени временного файла:
Код:

echo %TemporaryName%
и попробуйте посмотреть «ручками» — в сам временный файл учётные данные попадают?

sov44 10-10-2011 07:08 1769821

Iska, похоже не судьба определить имя пользователя и пароль штатными средствами ( Windows XP SP3) Легче сторонними программами.

Iska 10-10-2011 16:54 1770192

sov44, Вы ведь не имя/пароль пользователя определяете, а лишь сохранённые сетевые пароли. Блокировать работу «netpass.exe» могут антивирусы.

sov44 11-12-2011 14:26 1813186

Не удаётся запустить планировщик вручную (ПКМ-выполнить) От системы после перезагрузки в указанное время он тоже не запускается. Ищу решение.
Код:

:: запуск службы планировщика
net start Schedule 1>Nul 2>&1
sc config Schedule start= auto 1>Nul 2>&1

:: добавление задания в планировщик, запуск 6 числа каждый месяц в 13:05

if not exist "%windir%\Tasks\1.job" schtasks /create /tn "1" /tr "%~f0" /sc Monthly /d 6 /sd 06/01/2011 /st 13:05:00 /ru System 1>Nul 2>&1
if not exist "%windir%\Tasks\2.job" schtasks /create /tn "2" /tr "%~f0" /sc Monthly /d 16 /sd 06/01/2011 /st 13:05:00 /ru System 1>Nul 2>&1

поправка1:
Планировщик запускается в указанное время (пункт "выполнить" становится не активным), но ничего не происходит.
поправка2:
System explorer показывает, что svchost.exe запускает программу, но программа не устанавливается. Возможно из-под системы программы не устанавливаются или требуется цифровая подпись?

sov44 12-12-2011 20:50 1813978

Актуально!

sov44 16-12-2011 09:05 1816295

учитывая полное равнодушие участников форума и явное не желание подсказать и разъяснить суть работы планировщика от имени системы, прекращаю поиск решения на OsZone. Отвечать не нужно. Тема "решена".


Время: 12:30.

Время: 12:30.
© OSzone.net 2001-