bat笔记

284 阅读3分钟

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