从批处理文件中检查未监听的端口
Checking for Not Listening Ports from Batch File
我正在编写一个批处理文件来自动执行某些冗余任务。在这个过程中,我需要找到一个没有监听的端口,以便我可以使用它来安装一些服务。
我目前的测试代码是:
@echo OFF
:getPort
Set /P oPort=Enter an open port (not listening) (eg: 9335)
echo %oPort%
for /f "delims=" %%a in ('netstat -an |find /i "%oPort%"') do (
call set concat=%%concat%%%%a
)
echo %concat%
IF [%concat%] != []
echo %oPort% is already in use.
GOTO getPort
它抛出错误| was unexpected at this time.
我想在代码中做的是:
- 从用户那里获取端口号
- 运行 命令例如:
netstat -an | find /i 9225
并将输出值存储在变量中
- 如果变量不为空,则表示端口正在侦听,因此我需要提示用户输入另一个端口。
任何指导,请。
我建议不要使用 for 循环来提取输出,而是将其重定向到一个文件中并执行该操作。
@echo OFF
:getPort
Set /P oPort=Enter an open port (not listening) (eg: 9335)
echo %oPort%
netstat -an |find /i "%oPort%"' > temp.tmp
set /p concat=<temp.tmp
del temp.tmp
echo %concat%
IF "%concat%" NEQ "" (
echo %oPort% is already in use.
GOTO getPort
)
echo %oPort% is not in use.
REM Not sure if you want to exit or continue
goto getport
哪个应该有效。
netstat -an | findstr /r /c:"^ [TU][CD]P *[^ ]*:%oPort% " >nul && goto :getPort
不需要for
命令。只是测试是否可以找到该值。如果可以找到请求另一个端口。
我正在编写一个批处理文件来自动执行某些冗余任务。在这个过程中,我需要找到一个没有监听的端口,以便我可以使用它来安装一些服务。
我目前的测试代码是:
@echo OFF
:getPort
Set /P oPort=Enter an open port (not listening) (eg: 9335)
echo %oPort%
for /f "delims=" %%a in ('netstat -an |find /i "%oPort%"') do (
call set concat=%%concat%%%%a
)
echo %concat%
IF [%concat%] != []
echo %oPort% is already in use.
GOTO getPort
它抛出错误| was unexpected at this time.
我想在代码中做的是:
- 从用户那里获取端口号
- 运行 命令例如:
netstat -an | find /i 9225
并将输出值存储在变量中 - 如果变量不为空,则表示端口正在侦听,因此我需要提示用户输入另一个端口。
任何指导,请。
我建议不要使用 for 循环来提取输出,而是将其重定向到一个文件中并执行该操作。
@echo OFF
:getPort
Set /P oPort=Enter an open port (not listening) (eg: 9335)
echo %oPort%
netstat -an |find /i "%oPort%"' > temp.tmp
set /p concat=<temp.tmp
del temp.tmp
echo %concat%
IF "%concat%" NEQ "" (
echo %oPort% is already in use.
GOTO getPort
)
echo %oPort% is not in use.
REM Not sure if you want to exit or continue
goto getport
哪个应该有效。
netstat -an | findstr /r /c:"^ [TU][CD]P *[^ ]*:%oPort% " >nul && goto :getPort
不需要for
命令。只是测试是否可以找到该值。如果可以找到请求另一个端口。