Create an Android library

时间:2023-09-22 10:44:44

博文地址

我的GitHub 我的博客 我的微信 我的邮箱
baiqiantao baiqiantao bqt20094 baiqiantao@sina.com

批处理常用特殊符号简介

参考1
参考2

需要重点去理解的几个字符

% 变量引导符

  • 算数运算:SET /A a=5%%2里面%%为取余数(结果为1)
  • 引用变量:%var%就是变量var的引用,如果直接var,系统会把var当字符处理了
  • 命令行参数:单个%紧跟0-9的一个数字表示引用命令行参数
  • 引用循环变量:用于for中表示引用循环变量
  • 用于for中连续的两个%表示执行时脱为一个%
  • 用作行内注释:%行内注释%

%n 调用程序外部参数

%n(n为自然数)表示在调用批处理文件时传递的参数

  • %0 批处理文件本身,包括完整的路径和扩展名。参数%0具有特殊的功能,可以调用批处理自身,以达到批处理本身循环的目的,也可以复制文件自身等等。
  • %1 第一个参数
  • %9 第九个参数
  • %* 从第一个参数开始的所有参数
copy %0 d:\new_file.bat
:: 最简单的复制文件自身的方法

%行内注释%

可以用作行内注释,不能出现重定向符号管道符号

此时“注释内容”其实被当作变量,其值是空的,故只起注释作用,不过这种用法容易出现语法错误,一般不用。

%%k for语句特有的变量

%%ifor语句里面特有的变量,只有在批处理里面才写两个%%号表示变量(用1个会报错),在cmd中则只用一个%号(用2个会报错)。

批处理中之所以用两个%%是因为编译器编译的时候要屏蔽一个%

! 变量延迟时变量引用符

  • 变量引用符:在变量延迟问题中,用来表示变量,即%var%应该表示为!var!(不要问我为什么,因为这就是最基础的语法)。
  • 逻辑运算符:在 set /a 中表示逻辑非

() 多行命令整合符

小括号在批处理编程中有特殊的作用,左右括号必须成对使用,括号中可以包括多行命令,这些命令将被看成一个整体,视为一条命令行

括号在for语句和if语句中常见,用来嵌套使用循环或条件语句,其实括号也可以单独使用。

echo 1 & echo 2 & echo 3
(
echo 1
echo 2
echo 3
)
:: 上面两种写法效果一样,这两种写法都被视为是一条命令行

注意:这种多条命令被视为一条命令行时,如果其中有变量,就涉及到变量延迟的问题。

& 命令连接符

  • 命令连接符:可以把多个命令组合起来当一个命令来执行,这在批处理脚本里用的非常广泛,因为批处理认行不认命令数目
  • 位运算:在set/a中是按位与
@echo off & setlocal enabledelayedexpansion
set /A b=1 & echo b的值为:%b%,!b!(必须使用延迟扩展)

&& 和 || 组合命令符

符号&&||为组合命令:

  • 符号&&:前面的命令失败时,后边的命令将不会执行(前面的命令成功时,后边的命令会执行)
  • 符号||:前面的命令失败时,后边的命令才会执行(前面的命令成功时,后边的命令不会执行)
  • 符号&:前面的命令不影响后边的命令执行,目的一般为了将多行命令放在一行
copy %0 new_file.txt && echo 【拷贝当前批处理文件成功】
copy 不存在的文件.txt new_file.txt && echo 【拷贝成功1(不会执行)】
copy 不存在的文件.txt new_file.txt || echo 【拷贝失败1】 copy %0 new_file.txt && echo 【拷贝成功2】 || echo 【拷贝失败2(不会执行)】
copy 不存在的文件.txt new_file.txt && echo 【拷贝成功3(不会执行)】 || echo 【拷贝失败3】

> 和 < 重定向命令符

> 和 >> 输出重定向

  • >:传递并且覆盖,他所起的作用是将运行的结果传递到后面的范围。后边可以是文件或默认的系统控制台。在findstr/r中表示匹配单词的右边界,需要配合转义字符\使用。
  • >>:作用和>类似,区别在于,它是传递并在文件的末尾追加,而不是覆盖。
echo 【hello】>1.txt
echo 【hello 】>1.txt
echo 【world】>>1.txt tree > list.txt
dir . >> list.txt Dir . > NUL
:: 伪文件`NUL`用于丢弃程序的任何输出 TYPE CON > input.txt
:: 将用户所有输入内容都保存到一个EOF字符中, 稍后它将所有输入发送到指定文件中

< 输入重定向

  • 输入重定向命令符:将其后面的文件的内容作为其前面命令的输入。即从文件中读入命令输入,而不是从键盘(标准输入)中读入
  • 在findstr/r中表示匹配单词的左边界,需要配合转义字符\使用。
set /p a=<test.txt
echo 读取文件第一行内容:%a% CLIP < test.txt
:: 将文件内容复制到粘贴板

>& 和 <& 不常用

不常用,先不去理他

  • >&:将一个句柄的输出写入到另一个句柄的输入中
  • <&:刚好和>&相反,从一个句柄读取输入并将其写入到另一个句柄输出中

| 管道命令符

  • 管道符|:作用是将符号前的进程输出,当做符号后进程的输入(将前面命令的结果作为后面条命令的参数来使用)。
  • 位运算:在set/a中是按位或
  • 或:在帮助文档中表示其前后两个开关、选项或参数是二选一的

管道命令能够将一个命令的执行结果经过筛选,只保留我们需要的信息。

dir .;d:\ | find "txt"
:: 查找当前文件夹和D盘中含有txt的所有文件、文件夹 cat test.txt | grep bqt
:: 打印出指定文件包含内容 bqt 的那一会的内容 echo %date% | clip
:: 复制指定内容到剪贴板中

组合、管道、重定向命令的优先级

管道命令 > 重定向命令 > 组合命令

dir c:\ && dir d:\ > 1.txt
:: 执行后1.txt里只有D盘的信息,因为组合命令`&&`没有重定向命令`>`的优先级高 netstat /a /n | find "7626" && echo success>1.txt || echo %time% && echo %time%>1.txt
:: 执行顺序为【netstat /a /n | find "7626"】【echo %time%】【echo %time%>1.txt】
:: 执行后1.txt中只有一个时间

简单了解即可

; 相同命令分割符

命令相同时,分号;可以将不同目标用隔离,但执行效果不变。

dir c:\;d:\;e:\
:: 如果其中e盘不存在,运行显示:系统找不到指定的路径。然后终止命令的执行。不会打印任何内容 dir c:\;d:\ >>a.txt
:: 把C盘和D盘的信息都重定向到文件a.txt中

^ 取消转义符

  • 取消转义符:将所有转义字符的转义作用关闭
  • 位运算:在set/a中是按位异
  • 不匹配:在findstr/r的[]中表示不匹配指定的字符集
  • 续行符:因为每行末尾还有一个看不见的回车符,转义字符位于行尾时就让回车符失效了,从而起到了续行的作用
echo test ^>1.txt
echo 我^
是^
包青天^

: 标签定位符

标签定位符,可以接受goto命令所指向的标签。

"" 字符串界定符

  • 字符串界定符:在表示带有空格的路径时常要用""来将路径括起来;在一些命令里面也需要""符号
  • 在for/f中将表示它们包含的内容当作字符串分析
  • 在for/f "usebackq"表示它们包含的内容当作文件路径并分析其文件的内容
  • 在其它情况下表示其中的内容是一个完整的字符串,其中的>、>>、<、&、|、空格等不再转义
cd "program files"
cd progra~1
cd pro*
:: 以上三种方法都可以进入program files这个目录

/ 功能开关符

  • 能开关符:表示其后的字符(串)是命令的功能开关(选项),比如dir /s/b/a-d
  • 算数运算:在set/a中表示除法

, 特殊空格符

在某些情况下,逗号,可以用来当做空格使

dir,c:\

~ 变量扩展符

  • 在for中表示使用增强的变量扩展
  • 在set中表示使用扩展环境变量指定位置的字符串
  • 在set/a中表示按位取反

其他不重要的

要么是非常简单的,要么是不重要的或者不常用的

@ 命令行回显屏蔽符

这个字符在批处理中的意思是:关闭当前行的回显

我们知道,ECHO OFF可以关闭掉整个批处理命令的回显,但不能关掉ECHO OFF这个命令的回显,现在我们在ECHO OFF这个命令前加个@,就可以达到所有命令均不回显的要求

* 通配符

  • 匹配符:代表任意个任意字符,就是我们通常所说的通配符
  • 算数运算:在set/a中是乘法
  • 多次匹配:在findstr/r中表示将前一个字符多次匹配

- 范围表示符

  • 范围表示符:比如日期的查找,for命令里的tokens操作中就可以用到这个字符
  • 匹配范围:在findstr/r中连接两个字符表示匹配范围
  • 取反:跟在某些命令后表示取反向的开关

+ 文件合并符

  • 文件合并符:主要是在copy命令里面会用到它,表示将很多个文件合并为一个文件
  • 算数运算:在set/a中是加法

= 赋值符

赋值符号,用于变量的赋值

\ 根目录符

  • 根目录:这个\符号在有的情况下,代表的是当前路径的根目录。比如当前目录在c盘下,那么你dir \的话,就相当与dir c:\
  • 转义符:在findstr/r中表示正则转义字符

'' 命令或字符串

  • 在for/f中表示将它们包含的内容当作命令行执行并分析其输出
  • for/f "usebackq"中表示将它们包含的字符串当作字符串分析

. 当前目录

  • 在路径的\后紧跟或者单独出现时:一个.表示当前目录,两个..表示上一级目录
  • 在路径中的文件名中出现时:最后的一个.表示主文件名与扩展文件名的分隔

$ 一行的结束

在findstr命令里面表示一行的结束

` 命令符

指的是TAB上面的那个按键。

在for/f中,表示它们所包含的内容当作命令行执行并分析它的输出。

[] 字符集

  • 在帮助文档表示其中的开关、选项或参数是可选的
  • 在findstr/r中表示按其中指定的字符集匹配

? 匹配一个字符

  • 在findstr/r中表示在此位置匹配一个任意字符
  • 在路径中表示在此位置通配任意一个字符
  • 紧跟在/后表示获取命令的帮助文档

2020-5-23