I've built a script that works great until I run it as a scheduled task—then it fails. What's wrong?
You can use Windows 2000's or Windows NT 4.0's Task Scheduler to run commands and scripts at a scheduled time. Scripts that work fine when you run them interactively but fail when you schedule them typically do so for one of three reasons. First, the script might be running in a user context that doesn't have permissions to the resources the script is accessing. The Task Scheduler lets you specify a user account for each script. The old At or WinAt scheduler doesn't provide an easy way to specify a user account.
The second reason for failure is that the user environment variables might not be available to scripts running as scheduled tasks. If you use the %temp% variable (a common user variable) in a script, the script might fail when you run it as a scheduled task. Listing 1 shows a sample test script with user variables. Try running this both interactively and as a scheduled task; you'll notice that the %temp% variable might not be accessible when you run the script under the scheduler.
The third possibility for script failures is drive-mapping problems. The Task Scheduler doesn't run the user's logon script, so any drive mappings or other configurations that a typical logon supplies aren't available in a scheduled task unless you explicitly include them. If you use the Net Use command to map drives in your script, you must use
NET USE /D
to disconnect the drive because drives mapped in a script don't always disconnect gracefully. Typically, it's easier and safer to use Uniform Naming Convention (UNC) paths to connect to resources.