Saving project with a batch file - windows

I use batch files between my PLC and computer. PLC sending some commands to PC via batch files. For example I open a program or close. It works well done. But when I close the program It does not save anything.
I use command below:
taskkill /F /IM myprogram.exe
How can I close the program with saving?

That command kills the process, not allowing it to perform any actions when it closes. It just shuts down and exits.
You could try to omit the /F option, and save all data when your program gets the command to exit.

Related

How to use a .bat file to run other .bat(s) and have each one in a seperate cmd prompt in different directory locations

start cmd
cd /d C:\U\O\D\L\D\M
call runbot.bat
cd /d C:\U\O\D\L\F
call RunBossBot.bat
My issue is switching between cmd windows, it attempts to put everything in one window.
Grateful for any help,
Thanks
start "" "c:\somewhere\runbot.bat"
start "" "c:\somewhere\RunBossBot.bat"
Starting a Program
See start /? and call /? for help on all three ways.
Specify a program name
c:\windows\notepad.exe
In a batch file the batch will wait for the program to exit. When
typed the command prompt does not wait for graphical
programs to exit.
If the program is a batch file control is transferred and the rest of the calling batch file is not executed.
Use Start command
start "" c:\windows\notepad.exe
Start starts a program and does not wait. Console programs start in a new window. Using the /b switch forces console programs into the same window, which negates the main purpose of Start.
Start uses the Windows graphical shell - same as typing in WinKey + R (Run dialog). Try
start shell:cache
Use Call command
Call is used to start batch files and wait for them to exit and continue the current batch file.

Automatically Batch File if still running after 5 minutes i.e. hanging

I have a BAT File which connects to an FTP site to send/receive files. On rare occasions the batch file will hang if there is an issue with the network. I would like to know if there is a command to automatically exit the batch file if it has been running longer than 5 minutes? This would be placed in the batch file I assume, a kind of countdown from when it first opens.
Thanks.
Brett
You have to have two windows.
start ftp etc
Timeout /t 300
taskkill /im ftp.exe /f
This will kill all ftp.exe not just one. NOTE this relys on the fact we are running ftp without running cmd in the second console window.

My batch file is closing a program too early

Thank you, for those whom took the time to read my question. I am a gamer and would like to execute a few things. First, I would like to Trigger a batch file when I click a program, how do you do that or is it even possible? Basically, activating a game, triggers the batch file.
NOw for the batch file problem, I want to execute Xpadder when I activate games (this is an mmo) and when I close the game I want Xpadder's process/service to close. Ultimately, it's auto trigger,activate,wait,terminate.
That's kind of the process I want it to go if all can be done.
Batch File:
#echo off
start "Blade" "C:\Users\user\Documents\Blade.xpadderprofile" Blade.xpadderprofile
ECHO Blade.xpadderprofile STARTED
start /w "C:\Program Files (x86)\game\games.exe" games.exe
ECHO games STARTED
taskkill /f /im Xpadder.exe
This actually works but the problem is there are two ".exe" files with mmo's. I'll start the game and it would close Xpadder too early because one launcher starts another launcher/client. Xpadder works for the first launcher but the first launcher closes so the game will start. I hope I am explaining myself clear enough.
Reference link: How to automatically close App_A when I close App_B using batchfile
Essentially, this is the same question I have but it's not very clear. What is the batch code to get Xpadder to stay on until the second launcher/client is closed not the first one?
P.S
The game has to open through the launcher then into the second launcher/client or it will not work.
here is the other clients name and path i think:
C:\Program Files (x86)\game\gamer\bin\gam.exe
How about the use of the PsExec, a small MS ulility? Using it, your batch should work:
cmd /c psexec -d "Blade" "C:\Users\user\Documents\Blade.xpadderprofile" Blade.xpadderprofile
start /w "C:\Program Files (x86)\game\games.exe" games.exe
taskkill /f /im Xpadder.exe
The file psexec.exe must be placed in folder enlisted in the system variable WINDIR or PATH, or, otherwise, you should call it with its full path, eg. *C:\Program Files\Others\pstools.exe".
You can add #echo off, salt, pepper or some green Tabasco if you have mon€y for this :D

Kill batch file in such a way that its children are killed too, in Windows

I need to start an exe from a cmd (wrap the exe so I can supply some command-line options). The problem is that just calling the exe from the cmd does not make the wrapping completely transparent: if the .exe hangs, killing the cmd won't kill the exe. I need it to kill the exe too. Can I do that in plain Windows (from XP up), without adding any dependencies?
In Bash you have exec which replaces the shell process with the supplied command. This is handy for writing wrapper scripts, making the wrapping process completely transparent. I know Windows lacks execve() to make this possible, but I'm only interested in the parent-killing-its-children part.
CLARIFICATION: I'm not looking for ways to kill the exe, I am looking for ways to wrap (start) the exe so that killing it using standard ways (eg. Ctrl+C or from task manager) works. For instance, I could create a lnk file (Windows shortcut) and get this behavior, but I want to do it from a script (for one, lnks only work with absolute paths, I can't deploy that).
Thanks.
Taskkill can be used to match certain criteria. By entering Taskkill/? you get the manual and can read up on how to filter using common properties. I assume that all your children share a common portion in their name. You could use taskkill to math the name with wildcards and close all children that matched that name.
EDIT (taken from the comments section):
As IInspectable points out you can kill all child processes using the /T flag.
EDIT starting from a batch you could use START (reference here) to launch the exe parallel to the batch and have your abort in the batch.
Edit i wrote and tested this mini example:
#echo off
echo starting %1
start %1
echo Any key to kill execution
pause >> NUL
taskkill /IM %1 /t
taskkill /F /IM iexplore.exe
/F to force kill.
Which can kill subprocesses
e.g. https://www.windows-commandline.com/taskkill-kill-process/

How to stop a running process during an wise installation based un-install?

when i unwsied a project,if the main program of the project is running, then the un-install del all the floders and files except the main program.
how can i do,when i unwise a project if the main program is running .i want alert a dialog "are you sure to un-install this project when xxx.exe is running".
thanks.
Use a batch file to kill the process, like:
taskkill /IM programname.exe
It will prompt the user are they sure or ask if they want to save changes. Use /F to force the process to close.

Resources