Discussion forum for all Windows batch related topics.
Moderator: DosItHelp
-
Docfxit
- Posts: 132
- Joined: 12 Nov 2015 12:42
#1
Post
by Docfxit » 11 Mar 2019 11:54
I have a syntax error when trying to get the PID from a port number:
Code: Select all
for /f "tokens=5" %a in ('netstat -aon ^| findstr 80') do tasklist /FI "PID eq %a"
Thanks,
Docfxit
-
aGerman
- Expert
- Posts: 4678
- Joined: 22 Jan 2010 18:01
- Location: Germany
#2
Post
by aGerman » 11 Mar 2019 12:20
I suspect it's because of the FOR variables. In a batch script you have to double the percent signs.
Steffen
-
Docfxit
- Posts: 132
- Joined: 12 Nov 2015 12:42
#3
Post
by Docfxit » 11 Mar 2019 14:00
That fixed the error really great.
Do you have any idea why the port isn't being substituted in this code?
Code: Select all
set "Port#=80"
for /f "tokens=5" %%a in ('netstat -aon ^| findstr %Port#%') do tasklist /FI "PID eq %%a"
Thank you,
Docfxit
-
aGerman
- Expert
- Posts: 4678
- Joined: 22 Jan 2010 18:01
- Location: Germany
#4
Post
by aGerman » 11 Mar 2019 15:07
I don't know what you are expecting. First of all you should enclose the search string into quotes for the findstr command. And instead of "80" you should rather look for ":80\>" where \> marks the right word boundary as explained in the help of findstr. For your command that would mean
findstr ":%Port#%\>"
Steffen
-
Squashman
- Expert
- Posts: 4486
- Joined: 23 Dec 2011 13:59
#5
Post
by Squashman » 11 Mar 2019 15:34
You used it correctly in previous questions you have asked on the forums.
Eighth line of the help file for the FOR command.
To use the FOR command in a batch program, specify %%variable instead
of %variable. Variable names are case sensitive, so %i is different
from %I.
-
Docfxit
- Posts: 132
- Joined: 12 Nov 2015 12:42
#6
Post
by Docfxit » 11 Mar 2019 18:52
aGerman wrote: ↑11 Mar 2019 15:07
I don't know what you are expecting. First of all you should enclose the search string into quotes for the findstr command. And instead of "80" you should rather look for ":80\>" where \> marks the right word boundary as explained in the help of findstr. For your command that would mean
findstr ":%Port#%\>"
Steffen
That worked perfectly . Thank you very much.
Docfxit