windows-bat-demo


1      文件操作

1.1    复制文件

1.1.1  复制文件夹(输入)

从dir1 复制到dir2

 

@echo off

set /p dir1=d:/temp/logs

set /p dir2=e:/temp

xcopy "%dir1%" "%dir2%" /e /i /y

@pause

1.1.2  复制文件夹(不用输入)

从dir1 复制到dir2

@echo off

set dir1=d:/temp/logs

set dir2=e:/temp/logs

xcopy "%dir1%" "%dir2%"/e /i /y

@pause

1.2    判断文件目录是否存在

判断文件目录是否存在,存在则删除目录;

 

@echo off

set Pan=spring

if exist %Pan% ( 

         rd/s /q %Pan%

) else ( 

   echo not exist %Pan% 

1.3    删除文件目录

rd /s /q  temp

1.4    解压缩zip/war文件

前提:c:/windows/system32/ 下有unzip.exe 文件

 

解压到当前目录

unzip.exe -o *.zip

 

解压缩到指定目录

unzip.exe -o spring.war -d spring

2      字符串处理

2.1    字符串合并

set WAR_DEPLOY_NAME=test

set ZIP_A=.zip

set WAR_FULL_NAME=%WAR_DEPLOY_NAME%%ZIP_A%

echo %WAR_FULL_NAME%

 

 

2.2    字符串去空格

使用%A%%B%合并字符串后,如果出现空格,可以使用以下:

 

set WAR_DEPLOY_NAME=test

set ZIP_A=.zip

set WAR_FULL_NAME=%WAR_DEPLOY_NAME%%ZIP_A%

echo %WAR_FULL_NAME%

 

set "WAR_FULL_NAME=%WAR_FULL_NAME:=%"

echo %WAR_FULL_NAME%

 

2.3    字符串截取

 

set WAR_NAME=test.war

rem截取第一个到倒数第5个字符:

set WAR_PREFIX_NAME=%FULL_NAME:~0,-5%

echo %WAR_PREFIX_NAME%

3      Bat文件间参数传递

4      window批处理杀死指定端口进程

4.1    window批处理杀死指定端口进程

@echo off

setlocal enabledelayedexpansion

rem set /p port=请输入端口号:

set port=8989

for /f "tokens=1-5" %%a in('netstat -ano ^| find ":%port%"') do (

   if "%%e%" == "" (

       set pid=%%d

    )else (

       set pid=%%e

    )

   echo !pid!

   taskkill /f /pid !pid!

)

pause

4.2     

@echo off

setlocal enabledelayedexpansion

for /f "delims=  tokens=1" %%i in ('netstat -aon ^|findstr "8080"') do (

set a=%%i

goto js

)

:js

taskkill /pid "!a:~71,5!"

pause>nul

 

4.3    无错误–正常版本

@echo off

setlocal EnableDelayedExpansion 

set Port= 

set Dstport=8443 

 

for /F "usebackq skip=4tokens=2,5" %%a in (`"netstat -ano -p tcp"`) do ( 

  for/F "tokens=2 delims=:" %%k in ("%%a") do ( 

   set  Port=%%k 

 ) 

 echo !Port! %%b >>portandpid.txt 

for /F "tokens=2 delims=:" %%c in("%1") do ( 

   set  Port=%%c 

 ) 

for /F "tokens=1,2 delims= " %%din (portandpid.txt) do ( 

    remecho %%d  

   rem echo %Dstport% 

   if %%d == %Dstport% taskkill /f /pid %%e 

 ) 

del portandpid.txt   

set Port= 

set Dstport= 

rem goto :eof  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值