Войти

Показать полную графическую версию : создать задание в планировщике ХР по запуску батника


Страниц : [1] 2

sov44
03-10-2011, 13:47
Впервые пытаюсь создать задание в планировщике ХР по запуску батника ежемесячно 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
/tr "%~dp0" »
Сравните:
@echo off
setlocal enableextensions enabledelayedexpansion

echo %~dp0
echo %~f0

endlocal
exit /b 0

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

sov44
03-10-2011, 20:32
Подскажите, как сделать запуск планировщика каждое 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
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
Iska, я так понимаю, скрипт в посте 3 для Windows 7 ?
Поясните, для чего удалять, а потом создавать задание? Неужели нельзя каждый раз в цикле "накатывать" задание "сверху"?

Iska
03-10-2011, 23:10
Iska, я так понимаю, скрипт в посте 3 для Windows 7 ?»
Вам виднее — это Ваш пост (http://forum.oszone.net/post-1765191-3.html). Я ориентировался на:
CMD/BAT - [решено] создать задание в планировщике ХР по запуску батника »
Вашу правку:
p.s также интересует решение в среде Windows 7 »
не видел. Если в Windows 7 есть отличия — Вы их сможете прочитать сами. У меня нет Windows 7.

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

sov44
06-10-2011, 23:40
Подскажите, как дополнить скрипт
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
- путь к исполняемому файлу прописывался в кавычках. »
Экранировать передаваемые в утилиту кавычки обратным слэшем:
"%SystemRoot%\system32\schtasks.exe" /Create /tn "%TaskId%" /tr "\"%~f0\""
- прописывался путь к рабочей папке в кавычках »
Я не нашёл никаких способов управлять этим параметром из «schtasks.exe». Заданное поведение — рабочая папка берётся из пути к файлу, и — точка! Увы.

Ранее было предложено, как минимум, два обходных пути: Проблема с планировщиком, как передать рабочую папку (http://forum.oszone.net/showthread.php?t=211984).
- задание запускалось от имени пользователя »
Если текущего пользователя — просто не указывать никаких праметров, относящихся к именам/паролям. Пароль будет запрошен при создании задания. Если пользователь не текущий — указать /ru "[Domain\]UserName". Пароль также будет запрошен при создании задания.
При отсутствии пароля пользователя, задать его »
См. выше.
и снять галочку пользователя в control userpasswords2 для автоматического входа в систему. »
Какую «галочку пользователя»? «Требовать ввод имени пользователя и пароля»? Зачем?! Для исполнения задания вход в систему не обязателен, если иное не указано в свойствах задания.

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

sov44
07-10-2011, 07:26
Если текущего пользователя — просто не указывать никаких праметров, относящихся к именам/паролям. Пароль будет запрошен при создании задания. Если пользователь не текущий — указать /ru "[Domain\]UserName". Пароль также будет запрошен при создании задания. »
Без пароля планировщик не работает. Пароль в планировщике должен соответствовать паролю входа в систему.
Какую «галочку пользователя»? «Требовать ввод имени пользователя и пароля»? Зачем?! »
Для исполнения задания вход в систему не нужен, однако думаю вперёд: для чего делать лишние телодвижения при включении компьютера?
что именно Вы хотите запустить »
командный файл на основе поста 7 из http://forum.oszone.net/thread-216913-1.html

Iska
07-10-2011, 15:02
sov44, сожалею, но я перестал понимать Вас.

sov44
08-10-2011, 00:30
Путь к исполняемому файлу в кавычках и путь к рабочей папке в кавычках прописался одним ключом /tr "\"%~f0\""
Запуск задания от имени пользователя /ru username
Установленный пароль определил с помощью Network Password Recovery (http://www.nirsoft.net/utils/network_password_recovery.html)

@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
Установленный пароль определил с помощью Network Password Recovery »
Отчего так?

sov44
08-10-2011, 13:52
Отчего так? »
Теперь я Вас не понимаю. Есть другие вариатны решения или так, пофлудим?

Iska
08-10-2011, 14:54
Я интересовался, зачем нужно привлекать использование таких средств, и с какой целью это делается?

sov44
08-10-2011, 15:21
зачем нужно привлекать использование таких средств, и с какой целью это делается? »
- задать существующий пароль »
Без ввода пароля в окне планировщика, задание работать не будет
Самые распространенные ошибки при создании задачи, которые приводят к незапуску задачи в указанное время или к неудаче при тестовом запуске задачи — неправильно введенные пароль. Не менее часто можно столкнуться с тем, что задача не запускается из-за пустого пароля у учетной записи. Windows 2000, в отличие от Windows XP, запустит задачу из-под учетной записи с пустым паролем. В XP запуск задачи выполнен не будет. Решение этой проблемы — задать пароль для учетной записи и указать его в настройках задачи.
www.ixbt.com/soft/ms-task-scheduler.shtml

Iska
08-10-2011, 19:31
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
Iska, скрипт не определил пароль.

Iska
08-10-2011, 23:47
sov44, сдаётся мне, дело в кодировке файла. У Вас имя пользователя/пароль на кириллице?

sov44
09-10-2011, 10:09
У Вас имя пользователя/пароль на кириллице? »
Нет. Имя пользователя на английском, пароль цифрами. ;)

Iska
10-10-2011, 00:41
Проверил ещё раз, взяв свой же код с форума и создав сохранённый пароль для пользователя «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%
и попробуйте посмотреть «ручками» — в сам временный файл учётные данные попадают?




© OSzone.net 2001-2012