Показать полную графическую версию : создать задание в планировщике ХР по запуску батника
Впервые пытаюсь создать задание в планировщике ХР по запуску батника ежемесячно 6 и 10 числа. Ошибки.
schtasks /create /tn "Моё задание" /tr "%~dp0" /sc daily /mo 6 /sd %Date% /st 13:00:00 /ru System
Буду благодарен за практическую помощь и за инфу по ключам.
/tr "%~dp0" »
Сравните:
@echo off
setlocal enableextensions enabledelayedexpansion
echo %~dp0
echo %~f0
endlocal
exit /b 0
/TR программа Путь и имя файла программы,
которая будет запущена
запланированной задачей.
Пример: C:\windows\system32\calc.exe
Подскажите, как сделать запуск планировщика каждое 6 число месяца. Не получается:
schtasks /create /tn "Моё задание" /tr "%~f0" /sc monthly /mo 06 /sd 06/01/2011 /st %time:~0,-3% /ru System
p.s также интересует решение в среде Windows 7
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
Iska, я так понимаю, скрипт в посте 3 для Windows 7 ?
Поясните, для чего удалять, а потом создавать задание? Неужели нельзя каждый раз в цикле "накатывать" задание "сверху"?
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").
ОШИБКА: Указанное имя задания уже существует в этой системе.
Подскажите, как дополнить скрипт
schtasks /create /tn "Моё задание" /tr "%~f0" /sc Monthly /d 6 /sd 06/01/2011 /st 13:05:00 /ru System чтобы:
- путь к исполняемому файлу прописывался в кавычках.
- прописывался путь к рабочей папке в кавычках
- задание запускалось от имени пользователя
- задать существующий пароль\подтверждение пользователя. При отсутствии пароля пользователя, задать его и снять галочку пользователя в control userpasswords2 для автоматического входа в систему.
Заметил, что без этих изменений скрипт не отрабатывает.
- путь к исполняемому файлу прописывался в кавычках. »
Экранировать передаваемые в утилиту кавычки обратным слэшем:
"%SystemRoot%\system32\schtasks.exe" /Create /tn "%TaskId%" /tr "\"%~f0\""
- прописывался путь к рабочей папке в кавычках »
Я не нашёл никаких способов управлять этим параметром из «schtasks.exe». Заданное поведение — рабочая папка берётся из пути к файлу, и — точка! Увы.
Ранее было предложено, как минимум, два обходных пути: Проблема с планировщиком, как передать рабочую папку (http://forum.oszone.net/showthread.php?t=211984).
- задание запускалось от имени пользователя »
Если текущего пользователя — просто не указывать никаких праметров, относящихся к именам/паролям. Пароль будет запрошен при создании задания. Если пользователь не текущий — указать /ru "[Domain\]UserName". Пароль также будет запрошен при создании задания.
При отсутствии пароля пользователя, задать его »
См. выше.
и снять галочку пользователя в control userpasswords2 для автоматического входа в систему. »
Какую «галочку пользователя»? «Требовать ввод имени пользователя и пароля»? Зачем?! Для исполнения задания вход в систему не обязателен, если иное не указано в свойствах задания.
Опишите, что именно Вы хотите запустить, и условия применения.
Если текущего пользователя — просто не указывать никаких праметров, относящихся к именам/паролям. Пароль будет запрошен при создании задания. Если пользователь не текущий — указать /ru "[Domain\]UserName". Пароль также будет запрошен при создании задания. »
Без пароля планировщик не работает. Пароль в планировщике должен соответствовать паролю входа в систему.
Какую «галочку пользователя»? «Требовать ввод имени пользователя и пароля»? Зачем?! »
Для исполнения задания вход в систему не нужен, однако думаю вперёд: для чего делать лишние телодвижения при включении компьютера?
что именно Вы хотите запустить »
командный файл на основе поста 7 из http://forum.oszone.net/thread-216913-1.html
sov44, сожалею, но я перестал понимать Вас.
Путь к исполняемому файлу в кавычках и путь к рабочей папке в кавычках прописался одним ключом /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
к сожалению пока не получается прописать его в планировщик...
Установленный пароль определил с помощью Network Password Recovery »
Отчего так?
Отчего так? »
Теперь я Вас не понимаю. Есть другие вариатны решения или так, пофлудим?
Я интересовался, зачем нужно привлекать использование таких средств, и с какой целью это делается?
зачем нужно привлекать использование таких средств, и с какой целью это делается? »
- задать существующий пароль »
Без ввода пароля в окне планировщика, задание работать не будет
Самые распространенные ошибки при создании задачи, которые приводят к незапуску задачи в указанное время или к неудаче при тестовом запуске задачи — неправильно введенные пароль. Не менее часто можно столкнуться с тем, что задача не запускается из-за пустого пароля у учетной записи. Windows 2000, в отличие от Windows XP, запустит задачу из-под учетной записи с пустым паролем. В XP запуск задачи выполнен не будет. Решение этой проблемы — задать пароль для учетной записи и указать его в настройках задачи.
www.ixbt.com/soft/ms-task-scheduler.shtml
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 ==========================================================================
Iska, скрипт не определил пароль.
sov44, сдаётся мне, дело в кодировке файла. У Вас имя пользователя/пароль на кириллице?
У Вас имя пользователя/пароль на кириллице? »
Нет. Имя пользователя на английском, пароль цифрами. ;)
Проверил ещё раз, взяв свой же код с форума и создав сохранённый пароль для пользователя «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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.