Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用bat文件检查windows中的端口号_Batch File - Fatal编程技术网

Batch file 使用bat文件检查windows中的端口号

Batch file 使用bat文件检查windows中的端口号,batch-file,Batch File,我想检查两个端口是否正在运行。如果任何端口正在运行,则意味着必须检查下一个端口号,并将未使用的端口号写入文件中 例如:tomcat默认端口号为8080,oracle端口号为1521。 假设输入为8080和1521。 如果8080正在运行,则必须检查8081,如果此端口也在运行,则意味着必须检查未使用的端口号。假设未使用的端口号为8086。 这个端口必须写入文件Tomcat_port=8086 同样,检查oracle端口号也是如此 我不熟悉脚本,请帮助我解决这个问题。有一个批处理脚本命令,允许您确

我想检查两个端口是否正在运行。如果任何端口正在运行,则意味着必须检查下一个端口号,并将未使用的端口号写入文件中

例如:tomcat默认端口号为8080,oracle端口号为1521。 假设输入为8080和1521。 如果8080正在运行,则必须检查8081,如果此端口也在运行,则意味着必须检查未使用的端口号。假设未使用的端口号为8086。 这个端口必须写入文件Tomcat_port=8086

同样,检查oracle端口号也是如此


我不熟悉脚本,请帮助我解决这个问题。

有一个批处理脚本命令,允许您确定端口是否已被使用

    netstat -o -n -a | findstr (search criteria)
之后,会出现一个错误“ERRORLEVEL”,告诉您是否达到了标准。 如果一切正常,ERRORLEVEL等于0;如果不正常,ERRORLEVEL大于0

假设是这样,在下面找到一个脚本,它会询问您一个起始端口,如果有可用端口,它会自动停止。它还将该端口写入名为Availables.txt的文件中

     @echo off
     set /p port=Type the beginning port  
     set /a BPort=%port%


     setlocal ENABLEDELAYEDEXPANSION
     echo Available ports >> Availables.txt 
     set /a Maxport = 65535 - BPort

     for /l %%X in (0,1,!Maxport!) do ( 
     set /a tempo=BPort+X
     echo Current port=!tempo!   
     netstat -o -n -a | findstr :!tempo! 
     if !ERRORLEVEL! equ 0 (@echo "Port available") ELSE (@echo Port : !tempo! is   Available sir ! >> Availables.txt 
     goto eof) 
     set /a BPort=BPort+1 )

     echo There is any port available for you sir :(

     :eof
     echo Available port found 
     echo Finish processing
     pause 

告诉我它是否对你有用或者对任何问题有用

此代码定义了一个子例程/函数(
findFirstAvailablePort
),用于执行工作或从指定的起始编号搜索第一个可用的TCP端口。该值在变量中返回(也在子例程调用时传递)

然后调用此函数两次,以检索从8080和1521开始的可用端口。然后,检索到的数据被回显到控制台

@echo off
    setlocal enableextensions

    :: search for available ports
    call :findFirstAvailablePort 8080 tomcatPort
    call :findFirstAvailablePort 1521 oraclePort

    :: echo the retrieved data
    echo Tomcat_port=%tomcatPort%
    echo Oracle_port=%oraclePort%

    endlocal
    exit /B


:findFirstAvailablePort startingPort returnVariable
    setlocal enableextensions
    :: Generate a list of the open ports and save in temporary file
    set "tempFile=%temp%\%~nx0.tmp"
    ((@for /f "tokens=2" %%a in ('netstat -an -p tcp'
     ) do @for /f "tokens=1,2 delims=]" %%b in ("%%a"
     ) do @if "%%c"=="" (@echo(x%%b) else (@echo(%%c)
    )|@for /f "tokens=2 delims=: " %%d in ('more') do @echo($%%d$) > "%tempFile%"

    :: Test temporary file for next available port
    (break|@for /l %%p in (%~1 1 65535) do @(
        find "$%%p$" "%tempFile%" >nul || exit %%p
        if %%p==65535 exit 0
    ))
    set "port=%errorlevel%"

    :: clean and exit returning port
    endlocal & del /q "%tempFile%" 2>nul & set "%~2=%port%" & exit /b
该职能部门的工作分为两部分

第一部分读取netstat命令的输出并拆分该行以检索打开的端口列表并生成一个临时文件进行分析

第二个循环根据临时文件检查端口号,搜索找不到的第一个端口号

操作系统:Windows 7-64位

此批处理脚本查找未使用的非特权端口,并使用它从USB闪存驱动器使用便携式google chrome web浏览器打开本地web应用程序()。在上面的Web链接中,作者关于创建单独的runShinyApp.R和run.bat的建议被压缩为一个批处理文件,如下所示

@echo off
    title My Shiny APP

    setlocal ENABLEDELAYEDEXPANSION

    for /l %%X in (1025,1,65535) do (   
    netstat -o -n -a | findstr :%%X 
    if !ERRORLEVEL! neq 0 ( set avail_port=%%X
    goto eof) 
    )

    :eof
    SET ROPTS=--no-save --no-environ --no-init-file --no-restore --no-Rconsole

    start "" ".\GoogleChromePortable\App/Chrome-bin/chrome.exe" "http://localhost:!avail_port!/"

    R-Portable\App\R-Portable\bin\Rscript.exe %ROPTS% -e "require(methods); shiny::runApp('./shiny', launch.browser = FALSE, port = !avail_port!)" 1> ShinyAppOut.log 2> ShinyAppMsg.log