How to silently run a batch file every 5 minutes - windows

A Windows 10 application starts to lag every 10-15 minutes so every once in a while, when I notice the lag, I run the below batch file to delete the temp files. It works to eliminate the application lag but I would like to automate the batch file so that once I initiate it, it loops every 5 minutes without the cmd window poping up. Since I dont know how long I will be using the application and dont want the batch file runing after I finish using the application I need to be able to terminate the batch file manually.
Appreciate to let me know if there is options with and without the windows task scheduler.
#echo off
set targetdir=C:\ExampleDir
del /q %targetdir%\*
for /d %%x in (%targetdir%\*) do #rd /s /q ^"%%x^"

Related

CMD doesn't close after I run a batch file and files don't copy after deleting them once?

I made a batch file to copy my Witcher 3 save files and settings to another drive. It runs every time I start Windows and it runs again after 12 hours.
Problems are that it opens CMD and doesn't close it. I wan't it to close automatically, it doesn't matter if it shows deleting and copying the files I would actually prefer it showing those, just close automatically after those and don't show the seconds its counting for 12 hours.
Also after deleting the files from the backup location, it doesn't copy the files there anymore until I restart my PC.
I made the batch file to delete the files because it would just copy the new files and leave the old ones in and it would be a mess, so I'm not sure if I could do this only with the copy command and without the del command?
The batch file looks like this:
:loop
del /s /q "F:\Backups\The Witcher 3 save files"
xcopy /m /e /y "C:\Users\Kristian\Documents\The Witcher 3" "F:\Backups\The Witcher 3 save files"
timeout /t 43200
goto loop
If you want a batch file to run every 12 hours, you should use the Windows Task Scheduler. Then your script doesn't have to run 24/7.

Shut down machine after being idle with batch file?

I don't even know if this is possible, but is there anyway to shut down a machine after (n) minutes, using a batch file?
Currently I already have a batch file which works alongside ranorex and a virtual machine, and I need the machine to shut itself down after it has been idle for 10 minutes or so, just to give everything else in the batch file plenty of time to run. Is there any way of doing this?
Just use the command for shutdown and add the option for the time to wait:
shutdown /s /t 600 /f
/s is for shutting down the computer
/t is for wait before do the operation with time in seconds (10*60=600)
/f is for forcefully close all applications
With shutdown /a you can abort the action befor the time runs off. For more options use the help of the shutdown-command.

Batch file fails on startup, but works when I click it

I have a small problem with my batch script. The idea is simple:
I have an app that checks for updates periodically (checks for one exe file). If it finds one it then downloads it, renames it and puts it in the same directory as the old file. Then the app creates a .bat file and also puts it in the same directory. The contents of .bat file are :
#ECHO OFF
ECHO Waiting while old application closes...
ping 127.0.0.1 -n 5
taskkill /IM myApp.exe /f
ECHO Updating application
move /y myApp_TEMP.exe myApp.exe
START myApp.exe
pause
Before I close my application (myApp.exe) I instruct it to execute the .bat file, ant wait 5 sec. so it will properly close, that’s why the ping 127.0.0.1 -n 5 is here for. So ideally this script should:
Close myApp.exe
Rename myApp_TEMP.exe to myApp.exe
Overwrite old myApp.exe with new myApp.exe
Start myApp.exe
And it works when I double click on the .bat file, the problem occurs when I put myApp.exe in Windows startup list.
So the app start's, downloads update, generates the .bat file (keep in mind that everything is happening in the same directory) and then runs it. After some digging i found out that the line move /y myApp_TEMP.exe myApp.exe is not executing. But when I run this script manually everything works. Maybe someone has already experienced similar issues?
You are using relative paths in your filenames. Check that it's being run with the correct current directory or switch to absolute paths.
I would suggest using a CD /D <directory of the .exe file> before the move, that way you always know for sure you're in the right directory. Also, you can use timeout 5 /NOBREAK to wait for 5 seconds in regular batch-files
Might need to add some redundancy to the script. Such as:
#ECHO OFF
ECHO Waiting while old application closes...
taskkill /IM myApp.exe /f
timeout 5 /nobreak >nul
ECHO Updating application
IF EXIST "%cd%\MyApp_TEMP.exe" move /y myApp_TEMP.exe myApp.exe
IF EXIST "%cd%\MyApp.exe" GOTO STARTAPP
ECHO File not found. Unable to update.
pause
exit
:STARTAPP
START myApp.exe
pause
The problem seems to stem from a problem in directory searching. While this could be solved with a rather long search time, it'd be easier to make sure that the batch is in the same directory as "MyApp_TEMP.exe" or using
cd <path to MyApp_TEMP.exe>
ECHO Updating application
move /y myApp_TEMP.exe myApp.exe
START myApp.exe
pause
You could also use an ELSE if the file is not found, I just Personally prefer to use label jumping with GOTO.

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

Resources