11

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?

3 Answers 3

8

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

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
3
  • 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, 2010 at 14:19
  • 4
    @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, 2010 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, 2010 at 15:54
2

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
1

You have to run this code:

SCHTASKS /Change /TN "\yourFolder\yourTask" /Disable

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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