Luo Hao

Windows命令行操作

rehoni / 2022-09-01


1、Windows后台执行bat脚本

通过vb脚本来隐藏dos窗口,后台执行

 @echo off 
 if "%1" == "h" goto begin 
     mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit 
 :begin 
 ::
 redis-server.exe

建立脚本流程

创建main.vbs文件,调用运行bat,放入后台执行

 Set ws = CreateObject("Wscript.Shell")
 ws.run "cmd /c A.bat",0
 ws.run "cmd /c B.bat",0
 ws.run "cmd /c C.bat",0

建立主脚本main.bat,循环执行

 @echo off<nul 3>nul
 :one
 echo %date:~0,10% %time:~0,-3% 守护进程正在监控系统...
 start main.vbs
 ping 127.0.0.1 -n 10>nul
 goto one

通过ping命令来实现sleep 10秒的操作,每10秒执行main.vbs里边执行的3个脚本。

start命令

通过在bat脚本中,使用start命令来后台执行需要执行的脚本或者程序

 start /b a.bat

Windows开机自动执行bat脚本

编写bat脚本放置在以下位置

 C:\\Users\\xxxx\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup

即可实现开机自动执行该脚本

执行Java脚本

编写脚本时,如果有多java环境,需要设定好执行的JAVA_HOME,即指定的jdk目录。

如果jdk目录包含空格,如Program Files这样的目录,可以用""进行转义;如果转义无用,则可以考虑使用绝对路径。

 @echo off
 C:
 cd C:\\Program Files\\Java\\jdk1.8.0_152\\bin
 start /b java -jar E:\\nrec\\ImpSftp\\trans.jar -propath E:\\nrec\\ImpSftp\\imp.properties

 # E:\\nrec\\ImpSftp\\jdk1.8.0_152\\bin\\java -jar E:\\nrec\\ImpSftp\\trans.jar -propath E:\\nrec\\ImpSftp\\imp.properties

参考

让bat批处理后台运行,不显示cmd窗口(完全静化)

Start语法

2、查看和杀死进程

查看进程

tasklist | findstr “java”

杀死进程

taskkill命令

 # taskkill /pid[进程码] -t(结束该进程) -f(强制结束该进程以及所有子进程)
 taskkill /im 进程名称

示例:用taskkill /im tomcat7.exe命令关闭tomcat。

注:有两种方法查进程的PID码:

  1. 在命令行下用tasklist命令查出进程的PID码
  2. 在任务管理器中的查看选项中勾选PID那一项

例如:taskkill /pid 2345 -f -t

wmic process

 wmic process  where name="进程名称" call terminate 

这个不需要知道进程的PID码

ntsd

 ntsd -c q -p [PID进程码]

参考

如何在windows命令行后台运行某个命令?

3、ping不通或丢包时如何进行链路测试?

Windows操作系统Tracert介绍和使用

Tracert是路由跟踪程序,Tracert命令用来显示数据包到达目标主机所经过的路径,并显示到达每个节点的时间。Tracert命令功能与Ping命令类似,但获得的信息要比Ping命令详细,它可以显示数据包所走的全部路径、节点的IP以及时间。

  1. 登录Windows云服务器。

  2. 打开cmd命令窗,执行以下命令跟踪IP地址。

    tracert IP地址/网站地址

    例如:tracert www.example.com

    img

    对数据节点分析如下:

    • Tracert默认最大跳数30,第1列为起跳顺序号。
    • Tracert每次会发送三个数据包,第2、3、4列为对应三个数据包的返回时间。第5列为跳转的IP节点。
    • 假如某一层中出现了“* * * request timed out”,那么则需要定位这层的问题,可能这里导致连接不到目标节点。

Windows操作系统WinMTR介绍和使用

  1. 登录Windows云服务器。

  2. 通过浏览器访问外网,搜索并下载WinMTR安装包。

  3. 解压缩WinMTR安装包,WinMTR无需安装,可以直接解压运行。

  4. 双击WinMTR.exe,打开WinMTR工具。

  5. 在WinMTR窗口的Host处,输入目的服务器IP地址或者域名,单击“Start”。

    点击放大

  6. 根据实际情况,等待WinMTR运行一段时间,单击“Stop”,结束测试。如下图所示:

    点击放大

    测试结果的主要信息如下:

4、排查端口占用

问题:例如springboot应用启动失败

***************************
APPLICATION FAILED TO START
***************************

Description:

Web server failed to start. Port 8080 was already in use.

Action:

Identify and stop the process that's listening on port 8080 or configure this application to listen on another port.

打开命令窗口(以管理员身份运行),开始—->运行—->cmd,或者是 window+R 组合键,调出命令窗口。

# 该命令列出所有端口的使用情况。
netstat -ano
# 查看被占用端口对应的 PID
C:\Windows\system32>netstat -ano|findstr "8080"
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       1264
  TCP    [::]:8080              [::]:0                 LISTENING       1264
# 查看指定 PID 的进程
C:\Windows\system32>tasklist|findstr "8080"

强制(/F参数)杀死 pid 为 9088 的所有进程包括子进程(/T参数):

taskkill /T /F /PID 9088 

或者是我们打开任务管理器,切换到进程选项卡,在PID一列查看9088对应的进程是谁,如果看不到PID这一列,如下图:

image-20220507163554708