一心三用的海王 2018-02-26 08:44 采纳率: 0%
浏览 757
已结题

关于windows批处理的问题

我想让这个批处理实现
**
根据输入的端口号,输出该端口占用信息
如果未被占用,提示端口空闲
如果被占用,输出占用端口的进程信息和操作选项
可通过选项快速结束占用端口的进程
**
顺带说一下我是win10环境下用PowerShell运行的

 @echo off
:a
cls
set port=
set /p port=请输入端口号:
cls
if not defined port goto :a
set pid=
set prog=
for /f "tokens=2,4,5" %%a in ('netstat -ano^|find /i ":%port% "') do if not "%%c"=="" (set pid=%%c) else (set pid=%%b)

if defined pid (
    set "pid=%pid: =%"
    for /f "skip=3 tokens=1" %%a in ('tasklist /fi "pid eq %pid%"') do (
        echo 端口号:%port%
        echo PID:%pid%
        echo 进程:%%a
    )
    set user_input=
    set /p user_input=请选择操作a、结束进程 b、取消操作:
    echo 您的选择是:%user_input%
    if "%user_input%" == "a" (
        taskkill /f /fi "pid eq %pid%"
        set result=%ERRORLEVEL%
        if "%result%"=="1" ( echo 已经结束进程,按任意键返回 )
    )
    if "%user_input%" == "b" (
        goto :a
    )
    pause>nul
    goto :a
)
if not defined pid (
    echo 未发现占用端口进程,按任意键返回
    pause>nul
    goto :a
)
exit

查询进程信息都还算正常,但是选择操作那一步用choice和set /p获取到的选择项要么为空要么就不是我输入的值,是不是之前输入端口号对这里有影响?请问各位如何解决这个问题。

  • 写回答

3条回答 默认 最新

  • humanww 2018-02-26 08:51
    关注

    选择的时候需要填1或2

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!