本文已参与「新人创作礼」活动.一起开启掘金创作之路。
cmd指令的剖析
- %查看相对路径或是源目标
- %~x查看文件名后缀
- %~n查看文件名不含后缀
- %~z查看大小
- %~s查看绝对简写路径
- %~f查看绝对路径
- %~d查看盘符
- %~t查看修改时间
- if [not] defined variable 可以判断变量是否有内容
- %~I 删除外围"引号
- %~fI 完整路径
- %~dI 驱动器号
- %~pI 路径
- %~nI 文件名
- %~xI 文件扩展名
- %~dpI: 驱动器号和路径
- %~nxI: 文件名加扩展名
- + 命令文件连接符
- *, ? 文件通配符
- "" 字符串界定符
- ^ 转义符,其后面的特殊字符按原样输出
- | 命令管道符
- >> 文件重定向符
- @ 命令行回显屏蔽符
- / 参数开关引导符
- : 批处理标签引导符
- % 批处理变量引导符
- 组合命令: &
- 用法: 第一条命令 & 第二条命令 [& 第三条命令...]
- 同时执行多条命令,而不管命令是否执行成功。
- &&
- 用法: 第一条命令 && 第二条命令 [&& 第三条命令...]
- 同时执行多条命令,当碰到执行出错的命令将不执行后面的命令,如果一直没有出错则一直执行完所以命令。
- ||
- 用法: 第一条命令 || 第二条命令 [|| 第三条命令...]
- 同时执行多条命令,当碰到执行正确的命令将不执行后面的命令,如果一直没有出现正确执行的命令则一直执行完所以命令。
- | 管道命令
- 用法: 第一条命令 | 第二条命令 [| 第三条命令...]
- 将第一条命令的结果作为第二条命令的参数来使用
- > , >>, 输出重定向命令
- 将一条命令或某个程序输出结果重定向到特定文件中。> 与 >> 的区别在于:
- > 会清除原有文件中的内容后写入指定文件,
- >> 只会追加内容到指定文件中,而不会改变其中的内容。
- <, >&, <&
- < 从文件中而不是键盘中读入命令输入。
- >& 将一个句柄的输出写入到另一个句柄的输入中。
- <& 从一个句柄读入输入并将其写入到另一个句柄输出中。
- set [[/a [expression]] [/p [variable=]] string]
- %CD% 目录(current directory)
- %DATE% 日期
- %TIME% 时间
- %RANDOM% 随机数
- (,) 分组
- +,-,*,/,% 算法
- <<, >> 逻辑移位
- &, |, ^ 位运算
cmd指令与.bat脚本的注意事项与区分
实际上,在命令行中,单个%号才会起作用,而在.bat脚本中,有些作用域也就是大括号中的%号不变,作用域外的%号要变成两个%号。
cmd指令中的for循环结构
第一种是(x,y,z)从x到z(x,z都是数字),步长为y.例子中是从1到5,步长为1
for /l %i in (1,1,5) do
第二种是(x,y,z)表示就是在x,y,z三个值的时候
for %i in (1,2,3) do
第三种是一种带参数的for循环,tokens是列,skip是跳跃间隔,delims= 表示换行符分隔。表示找这个头文件中,每次换行的值的最后面的文件,全部输出到一个头文件中,如有扩展可以自行修改。
for /f "tokens=2 skip=1 delims= " %i in (.\include\crow.h) do type .\include\crow\%~nxi >> amalgamate\crow_all.h
若是另起一个.bat文件则需要把%号改成%%
for /f "tokens=2 skip=1 delims= " %%i in (.\include\crow.h) do type .\include\crow\%%~nxi >> amalgamate\crow_all.h
copy指令的妙用
如:把文件合并
copy /b 2.txt+3.txt+4.txt 5.txt
上面是合并指定txt类型,下面是合并所有这种txt类型的文件
type *.txt >> 0.txt
@echo的用途
一般是用来当做console.log来使用,@echo后面一律视为文本
CMD指令的广度扩展,精讲。如何只需要一行就能解决一切?(但便捷往往就不简单)
跳过android studio直接开模拟器
我不想每次都打开android studio,再从中开启模拟器怎么办?我们可以新建一个bat脚本。
- 想新建一个脚本,跳过android studio,直接开启模拟器,先使用下面的代码,那么然后保存为一个.bat文件,双击即可启动
for /f "delims= " %%i in ('findstr /m ".ini" %%UserProfile%%\.android\avd\*.ini') do (
%ANDROID_HOME%\emulator\emulator -netdelay none -netspeed full -avd %%~ni)
解决有时adb连接不上android
有时候开启了安卓模拟器,但是却手误按错了把其关闭,有时候程序退出的不干净,你点的过快导致无响应然后瞬间结束,这个时候往往会导致残留的进程存在在系统里面
- adb连接不上android 报错5037端口,那么此时就出现了残留 ,例如:我想找到5037端口pid同时杀掉该进程。其他端口只需要改最前面的数字即可
netstat -ano|findstr 5037>u &(for /f "tokens=5 delims= " %i in (u) do taskkill /pid %i -f)& del /s /q u