【转】【bat】Bat 中特殊符号
批处理、Bat 中特殊符号的实际作用,Windows 批处理中特殊符号的作用:
@
\\隐藏命令的回显。
~
\\在for中表示使用增强的变量扩展;
在set中表示使用扩展环境变量指定位置的字符串;
在set/a中表示按位取反。
%
\\使用两个%包含一个字符串表示引用环境变量。比如一个%time%可以扩展到当前的系统时间;
单个%紧跟0-9的一个数字表示引用命令行参数;
用于for中表示引用循环变量;
连续的两个%表示执行时脱为一个%。
^
\\取消转义字符,即将所有转义字符的转义作用关闭。比如要在屏幕显示一些特殊的字符,比如> >> | ^等时,就可以在其前面加一个^符号来显示这个^后面的字符了,^^就是显示一个^,^|就是显示一个|字符了;
在set/a中是按位异;
在findstr/r的[]中表示不匹配指定的字符集。
&
\\命令连接字符。比如我要在一行文本上同时执行两个命令,就可以用&命令连接这两个命令;
在set/a中是按位与。
*
\\代表任意个任意字符,就是我们通常所说的"通配符";比如想在c盘的根目录查找c盘根目录里所有的文本文件(.txt),那么就可以输入命令"dir c:\*.txt";
在set/a中是乘法。比如"set/a x=4*2",得到的结果是8;
在findstr/r中表示将前一个字符多次匹配。
()
\\命令包含或者是具有优先权的界定符吧,比如for命令要用到这个(),我们还可以在if,echo等命令中见到它的身影;
-
\\范围表示符,比如日期的查找,for命令里的tokens操作中就可以用到这个字符;
在findstr/r中连接两个字符表示匹配范围;
-跟在某些命令的/后表示取反向的开关。
+
\\主要是在copy命令里面会用到它,表示将很多个文件合并为一个文件,就要用到这个+字符了;
在set/a中是加法。
|
\\管道符。就是将上一个命令的输出,作为下一个命令的输入."dir /a/b | more"就可以逐屏的显示dir命令所输出的信息;
在set/a中是按位或;
在帮助文档中表示其前后两个开关、选项或参数是二选一的。
:
\\标签定位符,可以接受goto命令所指向的标签。比如在批处理文件里面定义了一个":begin"标签,用"goto begin"命令就可以转到":begin"变迁后面来执行批处理命令了。
" "
\\界定符,在表示带有空格的路径时常要用""来将路径括起来,在一些命令里面也需要" "符号;
在for/f中将表示它们包含的内容当作字符串分析;
在for/f "usebackq"表示它们包含的内容当作文件路径并分析其文件的内容;
在其它情况下表示其中的内容是一个完整的字符串,其中的>、>>、<、&、|、空格等不再转义。
/
\\表示其后的字符(串)是命令的功能开关(选项)。比如"dir /s/b/a-d"表示"dir"命令指定的不同的参数;
在set/a中表示除法。
>
\\命令重定向符,将其前面的命令的输出结果重新定向到其后面的设备中去,后面的设备中的内容被覆盖。比如可以用"dir > lxmxn.txt"将"dir"命令的结果输出到"lxmxn.txt"这个文本文件中去;
在findstr/r中表示匹配单词的右边界,需要配合转义字符\使用。
>>
\\命令重定向符。将其前面的命令的输出结果重新定向到其后面的设备中去,后面设备中的内容没有被覆盖。
<
\\将其后面的文件的内容作为其前面命令的输入。
在findstr/r中表示匹配单词的左边界,需要配合转义字符\使用。
=
\\赋值符号,用于变量的赋值。比如"set a=windows"的意思意思是将"windows"这个字符串赋给变量"a";
在set/a中表示算术运算,比如"set /a x=5-6*5"。
\
\\这个"\"符号在有的情况下,代表的是当前路径的根目录.比如当前目录在c:\windows\system32下,那么你"dir \"的话,就相当与"dir c:\"
在findstr/r中表示正则转义字符。
''
在for/f中表示将它们包含的内容当作命令行执行并分析其输出;
在for/f "usebackq"中表示将它们包含的字符串当作字符串分析。
.
\\
在路径的\后紧跟或者单独出现时:
一个.表示当前目录;
两个.表示上一级目录;
在路径中的文件名中出现时:
最后的一个.表示主文件名与扩展文件名的分隔。
&&
\\连接两个命令,当&&前的命令成功时,才执行&&后的命令;
||
\\连接两个命令,当||前的命令失败时,才执行||后的命令。
$
\\在findstr命令里面表示一行的结束。
``
在for/f中表示它们所包含的内容当作命令行执行并分析它的输出。
[]
在帮助文档表示其中的开关、选项或参数是可选的;
在findstr/r中表示按其中指定的字符集匹配。
?
\\在findstr/r中表示在此位置匹配一个任意字符;
?在路径中表示在此位置通配任意一个字符;
紧跟在/后表示获取命令的帮助文档。
!
\\当启用变量延迟时,使用!!将变量名扩起来表示对变量值的引用;
在set /a中表示逻辑非。比如set /a a=!0,这时a就表示逻辑1。
上面就是强调了半天的特殊字符了,但如果我们需要把他们当做字符串参数传递时该怎么办那,不用说首先考虑到的是加“”然后再转义成字符处理,但我的实践告诉我"\>","\<","\@","\|"不能实现自己想要的功能,正在头痛的时候想到了一个好办法,就是将这个特殊字符在ASCII表中的十进制数拿出来替换掉这些该死的东西,然后再解说端再把ASCII的10进制数换算成ASCII字符处理。
最后验证效果还是可以的,这样就避免的bat里关键字冲突的问题
转载于:https://www.cnblogs.com/liangxiaofeng/p/5028727.html
【转】【bat】Bat 中特殊符号的更多相关文章
- Bat 中特殊符号
批处理.Bat 中特殊符号的实际作用,Windows 批处理中特殊符号的作用: @\\隐藏命令的回显. ~\\在for中表示使用增强的变量扩展:在set中表示使用扩展环境变量指定位置的字符串:在set ...
- bat命令中的变量声明及使用
在bat文件中声明变量的方式如下: set xxx_variant_name=yyyyyyyyyyyy move D:\abc\efg\test.txt %xxx_variant_name%\test ...
- BAT批处理中的字符串处理详解(字符串截取)
BAT批处理中的字符串处理详解(字符串截取) BAT批处理中的字符串处理详解(字符串截取 批处理有着具有非常强大的字符串处理能力,其功能绝不低于C语言里面的字符串函数集.批处理中可实现的字符串处理 ...
- Windows Server 2008中使用计划任务定时执行BAT bat进行PHP脚本的执行
Windows Server 2008中使用计划任务定时执行BAT bat进行PHP脚本的执行 2016年01月03日 17:36:00 持之以恒 阅读数:5520 标签: windows定时任务.b ...
- bat代码中判断 bat是否是以管理员权限运行,以及自动以管理员权限运行CMD BAT
· bat 代码中判断bat是否是以管理员权限运行,以及自动以管理员权限运行CMD BAT 一.判断bat是否是以管理员权限运行 @echo off net.exe session >NUL & ...
- 关于bat脚本中的命令状态码相关的%errorlevel%变量
bat脚本中常用%errorlevel%表达上一条命令的返回值,即命令执行状态码.也称命令退出码 一般上一条命令的执行结果返回的值只有两种,0和非0 (如常见的1,2,4,5,9009等等),0一般会 ...
- C#中的@符号用法
C#中的@符号其实有很多的用法,我们来看看@有什么神奇之处. 1.限定字符串 用 @ 符号加在字符串前面表示其中的转义字符“不”被处理. 如果我们写一个文件的路径,例如"D:/文本文件&qu ...
- Linux的nm查看动态和静态库中的符号
功能 列出.o .a .so中的符号信息,包括诸如符号的值,符号类型及符号名称等.所谓符号,通常指定义出的函数,全局变量等等. 使用 nm [option(s)] [file(s)] 有用的optio ...
- DotNet中人民币符号的输出
DotNet中人民币符号“¥”的输出<html> <head>DotNet中人民币符号的输出</head> <body> <p>¥100元& ...
随机推荐
- 如何使用h5py读入数据
在网上找到的方法,如下: import h5py import numpy as np #HDF5的写入: imgData = np.zeros((2,4)) f = h5py.File('HDF5_ ...
- kuma kong 团队开发的可视化&&安全的service mesh
最近service mesh 的开源产品是越来越多了,好多团队都开源了自己的解决方案 maesh 最近kong 团队也开源了自己的service meshkuma 一张参考图 说明 kuma 没有基于 ...
- nginx.conf 配置解析之 events配置
worker_connections 1024; 定义每个work_process同时开启的最大连接数,即允许最多只能有这么多连接. accept_mutex on; 当某一个时刻只有一个网络连接请求 ...
- 阿里云服务器25端口禁用之如何使用Java发邮件(解决25端口禁用问题)
通常我们在本地使用Java发送邮件,通常是没有问题的,但是部署到服务器的话,就可能遇到问题.当然了,这与运营商也有关系.比如我之前在咖啡主机上购买虚拟机,然后将个人网站部署上去,通常是没有问题的,没有 ...
- 是什么让我走上Java之路?
选择方向,很多人都为根据自己的兴趣爱好和自己的能力所长而作出选择.那么是什么让我走上Java之路? 整个高三我有两门课程没有听过课,一门是数学,一门是物理.当时候物理没有听课的原因很简单,我有一本&l ...
- Leetcode:2. 两数相加
题目描述: 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来 ...
- Linux 删除文件未释放空间问题处理,下清空或删除大文件
linux里的文件被删除后,空间没有被释放是因为在Linux系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么 ...
- centos7 python2.7升级至python3.5.3版本
1.wget https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tgz #下载安装包 2.tar -zxvf Python-3.5.3 ...
- 用openssl 生成证书的过程
1. 安装 openssl 后可以执行如下命令来生成私钥和对应的证书请求文件 ca openssl req -new -keyout private.key -out for_request.csr ...
- javascript prototype理解
如图比较好的阐述了prototype和__proto__ 简单的可以这么理解: 狗类A( function foo()),狗类A的模板描述:A.模板 (foo.prototype)是一个对象objec ...