bat笔记
1、结束占用指定端口的程序
Windows下查看占用7000端口的程序,并结束进程。
#查看占用7000端口的进程
netstat -aon|findstr "7000"
TCP 0.0.0.0:7000 0.0.0.0:0 LISTENING 74404
TCP [::]:7000 [::]:0 LISTENING 74404
#查看74404进程信息
tasklist|findstr "74404"
java.exe 74404 Console 1 79,032 K
#强制(/F参数)杀死 pid 为 74404 的所有进程包括子进程(/T参数
taskkill /T /F /PID 74404
2、ssh命令:上传文件
scp /path/filename username@servername:/path/
命令行添加Windows定时任务:
schtasks /create /tn gitpull /sc daily /st 15:52:00 /tr F:\mayun\personal_document\gitpull.bat
gzpgay Steel0!@
Windows删除服务
sc delete 服务名称
创建软连接命令
#为E盘的wcj_app_log文件夹,在F盘创建软连接
#/D 为目录,默认为文件
mklink /D F:\wcj_app_log E:\wcj_app_log
4、创建开机启动项
#将下面的脚步保存为vbs文件,放到启动目录里就能开机启动
#示例为zk创建开机启动脚本
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c F:\mayun\wcj_app_dist\zookeeper-3.6.3\bin\zkServer.cmd",vbhide
5、查找指定目录下的指定类型的文件
dir /s /a /b f:\finish*.mp4
6、获取管理员权限执行cmd,在bat文件头部加入下面的代码
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"
7、提取同类型文件到另一个文件夹
#"tokens=* delims=" 解决文件名有空格只列出空格前面的字符问题
for /f "tokens=* delims=" %%i in ('"dir /s /a /b f:\finish*.mp4"') do (
echo "%%i"
move "%%i" "f:/Temp"
)
执行多条命令,前面要加:call
在批处理中,段注释有一种比较常用的方法:
goto start
= 可以是多行文本,可以是命令
= 可以包含重定向符号和其他特殊字符
= 只要不包含 :start 这一行,就都是注释
:start
另外,还有其他各种注释形式,比如:
1、:: 注释内容(第一个冒号后也可以跟任何一个非字母数字的字符) 2、rem 注释内容(不能出现重定向符号和管道符号) 3、echo 注释内容(不能出现重定向符号和管道符号)〉nul 4、if not exist nul 注释内容(不能出现重定向符号和管道符号) 5、:注释内容(注释文本不能与已有标签重名) 6、%注释内容%(可以用作行间注释,不能出现重定向符号和管道符号) 7、goto 标签 注释内容(可以用作说明goto的条件和执行内容)
1、将aa目录下的所有jar包加入classpath。
set CLASSPATH=
for %%i in ("./aa/*.jar") do call :append %%i
:append
set CLASSPATH=%CLASSPATH%;%1
echo %CLASSPATH%
2、获取本局域网中的机器IP列表:
COLOR 0A
CLS
@ECHO Off
Title 查询局域网内在线电脑IP
:send
@ECHO off&setlocal enabledelayedexpansion
ECHO 正在获取本机的IP地址,请稍等...
for /f "tokens=3 skip=2 delims=: " %%i in ('nbtstat -n') do (
set "IP=%%i"
set IP=!IP:~1,-1!
ECHO 本机IP为:!IP!
goto :next
)
:next
for /f "delims=. tokens=1,2,3,4" %%i in ("%IP%") do set range=%%i.%%j.%%k
ECHO.&ECHO 正在获取本网段内的其它在线计算机名,请稍等...
ECHO 本网段【%range%.*】内的计算机有:
for /f "delims=" %%i in ('net view') do (
set "var=%%i"
::查询在线计算机名称
if "!var:~0,2!"=="\" (
set "var=!var:~2!"
ECHO !var!
ping -n 1 !var!>nul
))
ECHO.
ECHO 正在获取本网段内的其它在线计算机IP,请稍等...
for /f "skip=3 tokens=1,* delims= " %%i in ('arp -a') do ECHO IP: %%i 正在使用
ECHO.
ECHO 查询完毕,按任意键退出...
pause>nul
常用的命令
@rem bat通过端口查找进程
netstat -ano | findstr 41994
@rem 结束进程
taskkill /f /pid 25576
@rem 根据进程名称结束进程,注意必须加上后缀.exe
taskkill /f /t /im proxy.exe