On my Windows 7 machine I can run something like:

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

But /Disable doesn't seem to be available in Windows XP - is there any way of disabling it from the command line?

link|improve this question
feedback

2 Answers

up vote 3 down vote accepted

The /disable switch is only a feature of Vista/7/2008.

You can simply rename the task .job file to "disable" it.

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.

In order to "enable" the task rename the .bak file to .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
link|improve this answer
Good idea. However I'd really like it to actually appear as disabled in Task scheduler, so I can enable it again at some point in the future. Normally you could just set it to "Run Once" and set a specific time, but this particular script we need to run on login, and then disable itself. – John Sibly Jul 26 '10 at 14:19
3  
@John: Updated my answer to show "enabling" example. Barring that option, you can copy C:\Windows\System32\schtasks.exe binary from a 2003+ install. Place this binary on the XP machine and call it using its explicit path. I have just successfully tested disabling a task created with the XP schtasks using the 2003 schtasks. – jscott Jul 26 '10 at 14:55
Thanks for your answers - I'm going to use the Win2003 workaround as this fits our situation better. But the renaming idea may also come in handy at some point too – John Sibly Jul 26 '10 at 15:54
feedback

In order to acheive the run-once behaviour, you could always just code a 'wrapper' bat script that checks for a lock file.

Create the lock file on first run, and every there after the wrapper script will just exit if it finds the lock file:

if exist Lock.file goto :eof
link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.