jimminybob
jimminybob

Reputation: 1442

Windows Task Scheduler doesn't start batch file task

I have a batch file with the code below to stop and start the SQL Report service:

net stop "SQL Server Reporting Services (MSSQLSERVER)" 

timeout /t 10

net start "SQL Server Reporting Services (MSSQLSERVER)"

I have set up the scheduled task to run daily, it currently runs as SYSTEM with the highest privileges set. I have set up the start in folder option on the action, and everything generally seems to be set up correctly. But when I run the task nothing seems to happen, it says the task has run but I cant see that the service has been restarted as it is meant to.

Can someone direct me to what I am missing?

Upvotes: 55

Views: 248433

Answers (21)

Hara
Hara

Reputation: 11

WIN 10: the main cause of the whole damn thing not working is the option "execute even if user is not logged in". It is the main culprit after trying so many solutions...

Once you put it on "only execute when user is logged in" the bat just works... not special hassle. Just do the auto search the file and hop, it works. No special command needed like many mentioned above. Just "C:\yourbat.bat" done.

Ofc I didnt find a solution to start the bat without being loggin in : /

Upvotes: 0

Ruzaik Nazeer
Ruzaik Nazeer

Reputation: 474

The running path of the .bat script can be set using the following code at the beginning of the script

pushd "F:\project1"

Upvotes: 0

vibs2006
vibs2006

Reputation: 6508

This is a old problem and this problem even exists in 2022 in Windows 10 and Windows 11!

I'm using Windows 10 Pro and therefore want to give an easy and a non technical way to all the users who want to go with the no-brainer/easy way to execute batch files on windows startup.

Please note this method is valid only for the users who want to auto execute the batch file(s)/script(s)/executable(s) only after they login to windows.

Please follow the steps given below

  1. Go to Run command and type shell:Startup Windows Shell Startup Command

  2. Now Windows will open the folder of startup. Copy your batch/executable file here in this folder as shown below Windows Startup Folder Location

  3. Give this file all file user persmissions (though this is not required but just to be fail safe!)Give User All File Permissions

  4. Restart the system and you'll now see your batch/executable file(s) executing automatically after you login Sample of Command Line Executing after startup

Upvotes: 0

octafbr
octafbr

Reputation: 136

I had the same problem and none of the solutions worked. When I checked the history I figured out the issue. I had this warning

Task Scheduler did not launch task "\TASK_NAME" because instance "{34a206d4-7fce-3895-bfcd-2456f6ed6533}" of the same task is already running.

In the settings tab there is a drop down option for "If the task is already running, then the following rule applies:" and the default is "Do not start a new instance". Change that to "Run a new instance in parallel" or "Stop the existing instance" based on what you actually need to be done.

I know it's an old thread and multiple solutions are good here, this is just what worked for me. Hope it helps.

Upvotes: 3

Satria
Satria

Reputation: 326

I have another reason, why script files (or maybe other types, too) are not run in the Task Scheduler: Unsuitable characters in the filename! Some characters are absolutely valid in the scope of a Windows filesystem, but disliked by the Task Scheduler. My filename used brackets like this: "Cert(renew).cmd", which refused to run. "Cert_renew.cmd" did run!

Upvotes: 1

Adir Dayan
Adir Dayan

Reputation: 1617

Configuration that worked for me:

  • In General tab: mark radio button - "Run only when user is logged on" <= important !
  • Program/script: just the path to script without quotes or nothing: C:/tools/script.bat
  • Add arguments: kept it empty
  • Start in: kept it empty

In settings, only 2 checkboxes marked:

  • Allow task to be run on demand
  • if the running task does not end when requested, force it to stop

Upvotes: 0

MrMohr
MrMohr

Reputation: 115

I was running this on a Windows Server OS. I worked for hours, only to find that the problem was that I had checked the "Run with highest privileges" checkbox. When checked on, it removes all drive mappings. And my .bat file was on the network.

enter image description here

Upvotes: 8

madballoonist
madballoonist

Reputation: 636

On a Windows system which supports runas. First, independently run your program by launching it from a command line which was run as that user, like following

runas /user:<domain\username> cmd

Then, in that new command line, cd to the path from where you expect the task launcher to launch your program and type the full arguments, for example.

cd D:\Scripts\, then execute

C:\python27\pthon.exe script.py

Any errors that are being suppressed by task scheduler should come out to command line output and will make things easier to debug.

Upvotes: 4

Matthew
Matthew

Reputation: 1787

My problem was caused by OneDrive. OneDrive was syncing the folder my batch file lived in, and that seems to prevent Task Scheduler from executing it. (Doesn't anyone at MS test this kind of thing?)

Anyway by moving my batch file to a folder that wasn't in OneDrive the batch file could be started by Task Scheduler.

Upvotes: 0

Tadej
Tadej

Reputation: 621

My application failed to start via "Task Scheduler".

The error in "Event Viewer" is: System.IO.DirectoryNotFoundException

The "Task Scheduler" tries to run this application with the "SYSTEM" user. The problem was that a "network drive" was not mapped for the "SYSTEM" user. So what I did was, I created a ".bat" file and mapped the "network drive" before starting the application:

net use T: \\172.20.2.215\images
cd C:\MyApplication
start MyApplication.exe

So check your logs first: "Event Viewer" -> Windows Logs -> Application

Upvotes: 2

Gregorio
Gregorio

Reputation: 428

For me, the problem was caused by the .bat included a cd to a network drive. This failed, and then the later call to the program in that network drive did nothing.

I figured this out by adding > log.txt in the Add arguments field of the Edit action window for the task.

Upvotes: 2

MoMo
MoMo

Reputation: 480

Wasted a lot of time on this silly issue!

add a cd command to where your batch file resides at the first line of your batch file and see if it resolves the issue.

cd D:\wherever\yourBatch\fileIs

TIP: please use absolute paths, relative paths ideally should not be an issue, but scheduler has an difficult time understanding them.

Upvotes: 32

shyammakwana.me
shyammakwana.me

Reputation: 5752

For me it was trigger issue. By default it should On a Schedule in trigger tab. I had selected At log on and then I was waiting to run task. As it's name says at log on, means you have to logout and log on.

Try putting it on a Schedule and fire it every minute.

enter image description here

Upvotes: 0

aditya garg
aditya garg

Reputation: 11

Try the code below:

Batchfile.bat:

cd c:\batchfilepath
net stop "SQL Server Reporting Services (MSSQLSERVER)" 
timeout /t 10
net start "SQL Server Reporting Services (MSSQLSERVER)"

Upvotes: 1

smitraa
smitraa

Reputation: 181

This is a pretty old thread but the problem is still the same -

I tried multiple things, none of them worked -

  1. Added a Start In Path (without quotes)
  2. Removed the complete path of the batch file in the Program/Script field etc
  3. Added C:\Windows\system32\cmd.exe to the Program and added /c myscript.bat to the arguments field.

This is what worked for me -

Program/Script Field - cmd

Add Arguments - /c myscript.bat

Start In : Path to myscript.bat

Upvotes: 18

sherin.k
sherin.k

Reputation: 63

One solution is you can run your '.bat' file with '.vbs' file and you can run this vbs file in windows scheduler.

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("cron_jobs.bat"), 0, True

You can do like this and i hope it will fix your issue.

Upvotes: 3

Ljuba
Ljuba

Reputation: 19

The solution is that you should uncheck (deactivate) option "Run only if user is logged on".

After that change, it starts to work on my machine.

Upvotes: 1

Gabo
Gabo

Reputation: 236

Had the same issue, make sure you check "Run only when user is logged on" at least that is what made my bat file alive again.

Upvotes: 7

Suhaib Ahmed
Suhaib Ahmed

Reputation: 101

I had the same problem. I believe it's a privilege problem. If you have "Run only when user is logged on" selected, then it won't happen.

You've hopefully figured it out by now, but I wanted to register it here for the next person who has wasted hours on this.

Upvotes: 10

widoz
widoz

Reputation: 49

Set 'Program/script' -- > file.bat set 'Start in' the rest of path (file.bat)

Upvotes: 4

ninjaPixel
ninjaPixel

Reputation: 6382

Make sure you set the 'Start in' and 'Program/script' options correctly. If your file address is: C:\Temp\foo.bat, set the 'start in' option to 'C:\Temp' and the 'Program/script' option to 'foo.bat'.

To set the 'Start in' option: Right click task in the task scheduler > Properties > Actions > Edit.

If this alone doesn't work then try moving the .bat file to a directory with basic permissions (maybe a shared directory for example).

I had a problem where my .bat file was located in a folder with some restrictive permissions on it, so that only my user account could access it. Even though I had set up the task scheduler to use my credentials it still failed. Moving the .bat file to another directory sorted the issue.

Upvotes: 134

Related Questions