Command Prompt doesn't close after scheduled task runs - windows

I have a job scheduled to run at 9:30 every day using Windows task scheduler. The problem is after it runs, the command prompt stays open. Does anyone know how to get it to close?
The full text in the "Add arguments (optional):" field is:
C:\WinPython64bit\notebooks\TreasuryTest.py exit 0
I have searched all over, but most fixes are for use directly in the command prompt, and it seems to function differently from the task scheduler.

Related

Windows Task Scheduler - Run task nonstop

I have a task/script, that I need to run nonstop.
However, I have set up the task, and I keep trying to run it. It does run, but after I refresh the tasks, it stops, says "Ready," and also says "Task Completed."
The thing is, I was able to do this before, and it continued running.
My question is, how can I make Task Scheduler continue to run nonstop? Any help would be appreciated.
The Task-Scheduler can not automatically wait on every derived process / application beeing executed. Once the main handle "finishes", the task is considered completed, and it's status turns to ready, even if there is still stuff running in the Background.
Example:
Consider two tasks, with the following actions:
Program cmd.exe, Parameters: /c pause
Program cmd.exe, Parameters: /c "start cmd.exe /c pause"
In case 1, the taskscheduler will say "running", until the cmd window closes. (Which is what you are asking for?) Case 2 invokes an action from within the first cmd window. So, even if the SECOND cmd-window remains open, the process created by the taskscheduler itself terminates - hence it considers the execution completed and switches back to "ready".
So: Make sure, your main-process started by the task scheduler (and maybe invoking other processes) does not end, before all the work is done.
in the above example, this could be achived like
Program cmd.exe, Parameters: /c "start /wait cmd.exe /c pause"
window 2 will be "paused" and window 1 waits for window 2 to close, leaving that process in an active state. So, the task scheduler keeps displaying "running".
to provide a less generic answer, you should update your question with more information: What task are you executing? What kind of script is it? What are you task settings, and what is your expected behaviour?

Windows 10 scheduled task not running

I have a very simple bat file which does a MysqlDump.
When I manually execute the bat file, it works. When I click "execute" in my scheduled taks, it works. But the scheduled task itself, doesn't run when it should run (timer expires).
I've setup a scheduled task to run every 5 minutes. In the scheduled taks manager I can see "next time to execute" "16:55". But when it is 16:55 the text updates to "next time to execute" "17:00". But in the "previous time executed" nothing changes. It still shows the time I manually have executed the task.
So, the weird thing is, when I click "execute" for the task, it runs. But when the time expires and it should run by itself, nothing happend.
I've enabled the history for the task. But even there nothing happens.
Can you help?

running shell script with windows task scheduler

I currenty have a simple shell script that I created for a linux machine to be run using cron, but now I want to be able to run the file using windows task scheduler. I have tried to get it to work using cron for cygwin, but even after running cron-config successfully and ensuring that the shell script can be executed successfully, for some reason the cron task simply wasn't executing. So I decided to give in and use the windows task scheduler. In order to do this, I looked at the following posts about the issue:
Cgywin .sh file run as Windows Task Scheduler
http://www.davidjnice.com/cygwin_scheduled_tasks.html
in my case, the entry in the "actions" tab of the new task looks like this:
program/script: c:\cygwin64\bin\bash.exe
arguments: -l -c "/cygdrive/c/users/paul/bitcoinbot/download_all_data.sh >> cygdrive/c/users/paul/bitcoinbot/logfile.log 2>&1"
start in: c:\cygwin64\bin
Notice that I redirected the output of the shell script to a log file, so that I should be able to see there whether the program run. Other than that, I simply edited the "trigger" tab to run the task daily, and set the time to a couple of minutes in the fture to see whether it ran successfully.
Alas, when I look at the detailed event history for the task, nothing changes when the trigger time passes. And when I manually "run" the task, the event history seems to add a few different events, but the task is completed within seconds, whereas this task should take over an hour (and it does when the shell script is executed directly from the terminal). And when I look for the log file that should have been created, there is nothing.
Does anyone have any idea what might be the issue here? How can I get my task to run properly at the trigger time, and how can I make sure it does so?
Best,
Paul
EDIT:
here are the pictures showing event history, as per Ken White's request.
Please ignore the fact that it says there are 24 events. These are from multiple separate runs of the task. The events shown here are a complete list of the events triggered by a single run.
EDIT 2:
Regarding my attempts to get cron to work, I have run into the following problem when I try to start the cron service using cygrunsrv. First of all, I tried to start cron by typing
cygrunsrv -I cron -p /usr/sbin/cron.exe -a -D
Now when I type
$cygrunsrv -Q cron
Service: cron
Current State: stopped
Command: /usr/bin/cron.exe
Now, I tried to start the cron service by typing
cygrunsrv -S cron
Cygrunsrv: Error starting a service: QueryServiceStatus: Win32 error 1062:
The service has not been started.
Does anyone hae any idea what this error means? I tried googling it, but couldn't find any answers.

Calling cscript.exe and passing a vbscript to call

I have scheduled a task in windows server 2008R2 ..I want to run a VBScript so when I setup the task I call the cscript at C:\Windows\System32\cscript.exe and in the arguments section I am passing //nologo //B d:\main\programs\copy.vbs /targets:contents but it is not executing my script ..If I call my script directly in the start program section it works fine but it's not working if I call CSrcipt and pass in arguments the status changes to queued but nothing happens after that..Can someone tell me what I am doing wrong here.
Also another question I have is that can we run 2 programs one after another in one task like when one script is finished I would like to start another script .
Thanks
Put this line at the top of your script and try again:
CreateObject("WScript.Shell").LogEvent 4, "Script running"
Unless you get an Information event with source WSH and event-ID 4, your script isn't running at all. Check the eventlog and the task's History tab for clues as to why that is. Also check the permissions of the script. Is the runas account of the task able to access/run the file? You can check that by starting a CMD instance as that user
runas /user:DOM\USER cmd
and then trying to run the script in that CMD instance.
Also double-check the task settings. As which user is it configured to run? With the user logged on or not logged on? Is "Run with highest privileges" enabled (in case UAC is enabled on your server)?
If the script does produce the abovementioned event that means it's running in principle, but something is going wrong in the process. You need to debug your script.

Windows 2008 Task Scheduler Return Code and Matlab Script

How do I allow my Matlab script to pass back a return code to the Task Scheduler? I currently have a task that runs "matlab -r myscript". The problem is the Task Scheduler always succeeds immediately after starting, even though myscript takes several minutes to run. So, I don't see how to pass back an error code.
How can I make Task Scheduler wait until the script stops running and then get matlab to pass back a return code?
Use the matlab -wait command line option to have it block until the program is finished.
There appears to be an undocumented argument to quit() to set the exit status - e.g. quit(42) - which then shows up in %ERRORLEVEL%. Since it's undocumented, you might not want to rely on it. Alternatively, have your script write its status to a file and have a wrapper script parse it.

Resources