批处理就随用随查了,感觉也没必要单独学习。所以这里就记录下怎么用bat的,然后积累些bat的用法
爱徒ZP吐槽说“A刚提了一版前端,B又改了bug也要部署一版🤦”。<br>
鄙人心有不忍,说“是不是可以尝试写个bat文件来把整个流程自动化起来”。<br>
故有了第一部分 1. 删除文件夹+npm build+jar打包。
1. 常用cmd命令
查找端口占用
C:\Users\liutianyu>netstat -ano |findstr "8083"
TCP 0.0.0.0:8083 0.0.0.0:0 LISTENING 21392
TCP 127.0.0.1:8083 127.0.0.1:8918 TIME_WAIT 0
TCP 127.0.0.1:8083 127.0.0.1:9586 TIME_WAIT 0
追IP数据包访问目标时所选择的路径
C:\Users\liutianyu>tracert www.baidu.com
通过最多 30 个跃点跟踪
到 www.a.shifen.com [220.181.38.149] 的路由:
1 *
2. 删除文件夹+npm build+jar打包
注:主要内容都是ZP完成,我只是稍微做了一丢丢优化。好了,废话不多说,先贴文件内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@echo off
:@=========================================
:@注:defaultBranch为默认分支,若有需要可自行修改
:@=========================================
set defaultBranch=master_test
echo 目前配置的默认分支为%defaultBranch%
set /p branch=请输入要打包的分支名,若使用默认配置则回车即可:
if "%branch%"=="" (set branch=%defaultBranch%)
rd /s /Q .\dist\
mkdir dist
echo 开始将分支切换为%branch%
git checkout %branch%
echo 开始拉取代码
git fetch
git pull
echo 完成代码拉取!
echo ********************************************
echo 开始npm build
call npm -v
call npm run build
echo ********************************************
cd dist
echo 开始打war包
jar -cvf test.war *
echo 结束
pause
知识点:
- windows的bat文件要用GBK编码,不然会出现乱码的情况。
- @echo off命令行中就不会出现具体的命令输入,只会有echo的输出以及命令的标准输出。
- set可以设置变量,=号要紧跟变量名。后续使用变量时要用%%来包裹起来。
- rd来删除文件夹
- 当使用一些外部命令的时候,可以使用call来进行调用,不然脚本会停止不会继续。(不过不知道为啥git没问题,npm执行后就会卡住)
- pause,脚本执行结束后可以暂停
3. 备份数据库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
@echo off
REM 声明采用UTF-8编码
chcp 65001
echo.
echo MySQL数据库备份脚本
echo.
echo *****************************
echo.
echo 备份日期:%date%
echo 备份时间:%time%
echo.
echo *****************************
echo.
echo 开始备份...
echo.
::set nowtime=%date:~3,4%年%date:~8,2%月%date:~11,2%日%time:~0,2%时%time:~3,2%分
set "nowtime=%date:~3,4%%date:~8,2%%date:~11,2% %time:~0,2%%time:~3,2%"
set "nowtime=%nowtime: =0%"
::数据库名称
set dbname=forlovetolove
::数据库的账号
set user=root
::数据库密码
set password=xixixihahaha
::数据库地址
set host=127.0.0.1
::数据库端口
set port_num=3306
::执行导出操作
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqldump" --column-statistics=0 --default-character-set=utf8mb4 -P%port_num% -h%host% -u%user% -p%password% %dbname% > %dbname%_%nowtime%.sql
echo.
echo MySQL数据库备份完成
echo.
@echo on
@pause
知识点:
- 由于没有配置环境变量,导致mysqldump需要使用绝对路径来执行。对于绝对路径的命令执行,如果路径中包含中文,使用双引号包住就可以使用了。
- 如果使用mysqldump时出现
mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"') FROM information_schema.COLUMN_STATISTICS WHERE SCHEMA_NAME = 'spv' AND TABLE_NAME = '_task_work';': Unknown table 'COLUMN_STATISTICS' in information_schema (1109)的错误,则使用--column-statistics=0来处理。
4. 批量开启软件(call和start的区别)
为了隔离cookie,进行多账号的测试。将Chrome进行了双开(实际开了8个🤭)。如何进行Chrome双开,可以参考微博链接。每次点点点很麻烦,最后生成的脚本如下。
1
2
3
4
5
6
7
start MyGoogleChrome.lnk
start test1.lnk
start test2.lnk
start test3.lnk
start test4.lnk
start test5.lnk
start test6.lnk
知识点:
最初尝试了call命令,发现只能打开一个Chrome,后面的都不执行了。后来查了下,大概总结如下。不是100%确定,但是我不太想自己研究了😜
call设计之初是在当前的进程中执行另一个bat文件,可以传参也可以接收该bat文件的执行结果出参。可以理解为将多个bat文件编排顺序执行。但是同时也只有收到另一个bat文件的执行完成的指令后才会继续执行。相较于call的调用,start就是执行,完全另起一个进程,虽然可以传递参数,但是不会接收执行完成的出参接口。
5. 查看笔记本电脑电池健康度
在cmd窗口执行 powercfg /batteryreport /output "D:\DianChi.html"命令后,电池使用情况会输出至指定路径。其中DESIGN CAPACITY是设计容量,FULL CHARGE CAPACITY是完全充满的容量,计算一下就可以知道电池损耗了。
6.使用SSH
在cmd窗口执行 ssh -p 22 nvidia@10.10.10.27"命令后,键入密码即可连接。好像Windows默认没有这个功能,需要额外在windows附加功能中启用。
7.MD5、SHA1、SHA256
Windows自带的命令行可以计算MD5值。
1
2
3
4
C:\Users\gavin\Downloads>certutil -hashfile digiKam-7.8.0-Win64.exe md5
MD5 的 digiKam-7.8.0-Win64.exe 哈希:
aded053df9d385926a3232156faa36ca
CertUtil: -hashfile 命令成功完成。
注:把“md5”换成“SHA1”、“SHA256”即可计算别的值。
8.使用diskpart
8.1.解决Window不能自动分配移动硬盘盘符的问题
1
C:\Users\gavin>diskpart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Microsoft DiskPart 版本 10.0.22621.1
Copyright (C) Microsoft Corporation.
在计算机上: SURFACELAPTOPGO
DISKPART> list disk
磁盘 ### 状态 大小 可用 Dyn Gpt
-------- ------------- ------- ------- --- ---
磁盘 0 联机 238 GB 0 B *
磁盘 1 联机 3726 GB 0 B *
磁盘 2 联机 232 GB 0 B
磁盘 3 联机 3726 GB 0 B *
DISKPART> select disk 2
磁盘 2 现在是所选磁盘。
DISKPART> list part
分区 ### 类型 大小 偏移量
------------- ---------------- ------- -------
分区 1 主要 232 GB 1024 KB
DISKPART> select partition 1
分区 1 现在是所选分区。
DISKPART> attributes volume
只读 : 否
隐藏 : 否
没有默认驱动器号 : 是
卷影副本 : 否
DISKPART> attributes volume clear hidden
卷属性清除成功。
DISKPART> attributes volume clear NoDefaultDriveLetter
卷属性清除成功。
DISKPART> attributes volume
只读 : 否
隐藏 : 否
没有默认驱动器号 : 否
卷影副本 : 否
DISKPART>
更新日志
- 2020年6月2日:初稿,1. 删除文件夹+npm build+jar打包。
- 2020年7月5日:增加2. 备份数据库。
- 2020年10月12日:增加3. 批量开启软件(call和start的区别)。
- 2021年5月19日:增加4. 常用cmd命令
- 2021年9月5日:增加追IP数据包访问目标时所选择的路径
- 2022年7月15日:增加6.使用SSH
- 2022年12月5日:增加7.MD5、SHA1、SHA256
- 2023年2月4日:增加8.使用diskpart