| 1. |
Solve : only one instance of batch? |
|
Answer» I have this script which prevents to run two instances of the same batch. What does that tell you?Sorry, really have no clueDid the ping command work both times?I told you WAY up above you shouldn't use a variable called PATH or path in your scripts. Maybe you didn't read that. You didn't ask why. You don't understand anything about batch scripts, which makes it risky to run scripts you found on the web, and doubly risky to alter them when you don't know what you are doing. You could try something like this below, but maybe you would be better off actually trying to learn how to write your own scripts? or another language? People say good things about Python. echo off setlocal enabledelayedexpansion echo my name is %~nx0 echo now I look for my name using Tasklist set found=0 for /f "delims=" %%A in ('tasklist /v ^| find "cmd.exe" ^| find "%~nx0"') do set /a found+=1 echo Found this batch in Tasklist %found% time(s). if %found% gtr 1 ( echo Script with same name already running echo Exiting... pause exit ) REM rest of script echo If I reached here I am the only %~nx0 running pause yes you are right. I have intention to take class for powershell and learn that. I know using path which is command is not good like using the name of the batch as some exe program in script. I learn something but still need alot of it to learn. thank you when I test this notepad opens everytime when I run it but it should not. Code: [Select]echo off setlocal enabledelayedexpansion echo my name is %~nx0 echo now I look for my name using Tasklist set found=0 for /f "delims=" %%A in ('tasklist /v ^| find "cmd.exe" ^| find "%~nx0"') do set /a found+=1 echo Found this batch in Tasklist %found% time(s). if %found% gtr 1 ( echo Script with same name already running echo Exiting... pause exit ) notepad.exe echo If I reached here I am the only %~nx0 running pauseI thought you wanted a batch which would only allow one running instance of itself. Quote from: Salmon Trout on March 28, 2019, 09:54:25 AM I thought you wanted a batch which would only allow one running instance of itself. Yes it should run only one instance of batch but I see sometimes is runned two or more. That's why I was searching for a script which will prevent starting another when first one already runs. So script which I post it do that, but problem is I can't set a path where it SAVE that lock files. When I run that script, while it is still running, if you open a new command window, and run it again, the new instance exits without starting Notepad. Quote from: Salmon Trout on March 28, 2019, 11:43:24 AM When I run that script, while it is still running, if you open a new command window, and run it again, the new instance exits without starting Notepad.When I do that it opens notepad everytime. I tested 3 times and opened 3 notepads. |
|