博文地址

我的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 第九个参数
  • %* 从第一个参数开始的所有参数
  1. copy %0 d:\new_file.bat
  2. :: 最简单的复制文件自身的方法

%行内注释%

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

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

%%k for语句特有的变量

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

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

! 变量延迟时变量引用符

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

() 多行命令整合符

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

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

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

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

& 命令连接符

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

&& 和 || 组合命令符

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

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

> 和 < 重定向命令符

> 和 >> 输出重定向

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

< 输入重定向

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

>& 和 <& 不常用

不常用,先不去理他

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

| 管道命令符

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

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

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

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

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

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

简单了解即可

; 相同命令分割符

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

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

^ 取消转义符

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

: 标签定位符

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

"" 字符串界定符

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

/ 功能开关符

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

, 特殊空格符

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

  1. 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

Create an Android library的更多相关文章

  1. 【转】如何使用Android Studio把自己的Android library分发到jCenter和Maven Central

    转自:http://www.devtf.cn/?p=760&utm_source=tuicool 如何使用Android Studio把自己的Android library分发到jCenter ...

  2. How to distribute your own Android library through jCenter and Maven Central from Android Studio

    In Android Studio, if you wish to include any library to your application. You could just simply add ...

  3. 1.3、Android Studio创建一个Android Library

    一个Android Library结构上与Android app模块相同.它可以包含构建一个app需要的所有东西,包括圆满,资源文件和AndroidManifest.xml.然而,并非编译成运行在设备 ...

  4. 1. Retrofit2 -- Getting Started and Create an Android Client

    1. Retrofit2 -- Getting Started and Create an Android Client Retrofit tutorial 什么是 Retrofit 如何申明请求 准 ...

  5. 关于创建Android Library所须要知道的一切

    关于创建Android Library所须要知道的一切 Android 库(Library)在结构上与 Android 应用模块同样.应用模块所能够包括的东西.在库中都同意存在,包括代码文件.资源文件 ...

  6. Android Library的依赖方式及发布(转)

    还是那句老话,好记性不然烂笔头,在此整理 Android Studio 依赖相关 以及 如何发布项目到 JCenter Android Studio 添加依赖Module 依赖module 依赖是指在 ...

  7. Android Library 发布开源库 JCenter & JitPack 攻略

    对于Android 的开源库,一般通过 JCenter 或者 JitPack 发布开源.两种方式均可~ 当你造了一个好玩有用的东西想要分享给大家时,开源出来便是一种好方式~ 一. 上传开源库到 JCe ...

  8. [Cordova] Plugin里使用Android Library

    [Cordova] Plugin里使用Android Library 前言 开发Cordova Plugin的时候,在Native Code里使用第三方Library,除了可以加速项目的时程.也避免了 ...

  9. Android library projects cannot be launched

    今天我用SDK自带的ApiDemos建了一个工程,运行的时候出现问题,提示:Android library projects cannot be launched 解决办法如下: 右键工程根目录-&g ...

随机推荐

  1. HDU 5832 A water problem 水题

    A water problem 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5832 Description Two planets named H ...

  2. Ural 2037. Richness of binary words 打表找规律 构造

    2037. Richness of binary words 题目连接: http://acm.timus.ru/problem.aspx?space=1&num=2037 Descripti ...

  3. JavaMail发送和接收邮件API(详解)

    一.JavaMail概述: JavaMail是由Sun定义的一套收发电子邮件的API,不同的厂商可以提供自己的实现类.但它并没有包含在JDK中,而是作为JavaEE的一部分. 厂商所提供的JavaMa ...

  4. PHP之PDO_MYSQL扩展安装步骤(转)

    看到CakePHP文档要求安装pdo_mysql扩展,于是就尝试安装了一下. 这里我的系统是CentOS 6.0.如果你的系统是其他版本的Linux/Unix,可以参考.如果你的系统是Windows的 ...

  5. RxJS 简介:可观察对象、观察者与操作符

    RxJS 简介:可观察对象.观察者与操作符 对于响应式编程来说,RxJS 是一个不可思议的工具.今天我们将深入探讨什么是 Observable(可观察对象)和 observer(观察者),然后了解如何 ...

  6. Android 程序目录介绍

    还是回到 Eclipse 中,首先展开 HelloWorld 项目,你会看到如图 1.17 所示的目录结构. 图   1.17 一开始看到这么多陌生的东西,你一定会感到有点头晕吧.别担心,我现在就对上 ...

  7. TMS WEB CORE直接从HTML&CSS设计的页面布局

    TMS WEB CORE直接从HTML&CSS设计的页面布局 TMS WEB CORE支持DELPHI IDE中拖放控件,生成HTML UI.这种方式适合DELPHI和C++ BUILDER的 ...

  8. cocos2d-x调用scheduleUpdate()不执行update()方法的解决办法

    前两天使用到每帧都更新动画的scheduleUpdate()方法,但通过cclog,我发现, scheduleUpdate()是执行了.但update()方法并没有被调用. 那是因为在CCLayer中 ...

  9. 神探夏洛克第一季/全集Sherlock1迅雷下载

    第一季 Sherlock Season 1 (2010)看点:夏洛克·福尔摩斯(Sherlock Holmes)是一个虚构的侦探人物,是由19世纪末的英国侦探小说家阿瑟·柯南·道尔所塑造的一个才华横溢 ...

  10. 监听home键+模拟home键

    一.监听home键首先定义一个广播接受者 HomeKeyReceiver package com.kale.floattest; import com.kale.floattest.service.D ...