É possível desativar uma tarefa agendada na linha de comando no Windows XP?

11

Na minha máquina com Windows 7, posso executar algo como:

schtasks.exe /Change /TN "MyTaskName" /Disable

Mas / Disable parece não estar disponível no Windows XP - existe alguma maneira de desabilitá-lo na linha de comando?

John Sibly
fonte

Respostas:

8

O /disableswitch é apenas um recurso do Vista / 7 / 2008R2 / 2012 .

Você pode simplesmente renomear o .jobarquivo de tarefas para "desativá-lo".

schtasks /Create /SC HOURLY /TN "TEST TASK" /TR notepad
schtasks

TaskName                             Next Run Time            Status
==================================== ======================== ===============
TEST TASK                            09:45:00, 7/26/2010

move "C:\WINDOWS\Tasks\TEST TASK.job" "C:\WINDOWS\Tasks\TEST TASK.bak"
schtasks
INFO: There are no scheduled tasks present in the system.

Para "ativar" a tarefa renomeie o .bakarquivo para .job:

schtasks
INFO: There are no scheduled tasks present in the system.

move "C:\WINDOWS\Tasks\TEST TASK.bak" "C:\WINDOWS\Tasks\TEST TASK.job"
schtasks

TaskName                             Next Run Time            Status
==================================== ======================== ===============
TEST TASK                            09:45:00, 7/26/2010
jscott
fonte
Boa ideia. No entanto, eu realmente gostaria que ele aparecesse como desativado no Agendador de tarefas, para poder ativá-lo novamente em algum momento no futuro. Normalmente você pode simplesmente configurá-lo para "Executar uma vez" e definir um horário específico, mas esse script específico precisamos executar no logon e depois desativar-se.
John Sibly
4
@ John: Atualizei minha resposta para mostrar o exemplo "habilitando". Salvo essa opção, você pode copiar o C:\Windows\System32\schtasks.exebinário de uma instalação 2003+. Coloque esse binário na máquina XP e chame-o usando seu caminho explícito. Acabei de testar com êxito a desativação de uma tarefa criada com o XP schtasksusando o 2003 schtasks.
jscott
Obrigado por suas respostas - vou usar a solução Win2003, pois isso se ajusta melhor à nossa situação. Mas a idéia de renomear também pode ser útil em algum momento também
John Sibly
2

Para obter o comportamento de execução única, você sempre pode codificar um script bat 'wrapper' que verifica se há um arquivo de bloqueio.

Crie o arquivo de bloqueio na primeira execução, e todos os que estiverem após o script do wrapper serão encerrados se encontrar o arquivo de bloqueio:

if exist Lock.file goto :eof
Michael
fonte