windows中dos批处理之命令特殊符号通配符与转义符(推荐)

目录
  • 常用特殊符号
  • 通配符(?和*)
    • 转义符
  • 对批处理中常用符号的详细解
    • 1、@
    • 2、%、%%
    • 3、: 和 ::
    • 4、~
    • 5、>、>>
    • 6、|
    • 7、^
    • 8、&
    • 9、&&、||
    • 10、()
    • 11、+、-、*、/
    • 12、equ、neq、lss、leq、gtr、geq

文章进行重新排版,并做了部分补充。所有命令均在win7 x64 中文旗舰版上进行测试。

常用特殊符号

  • @命令行回显屏蔽符
  • %批处理变量引导符
  • > 重定向符
  • > > 重定向符
  • <、>、<& 重定向符
  • | 命令管道符
  • ^ 转义字符
  • & 组合命令
  • && 组合命令
  • || 组合命令
  • ""字符串界定符
  • , 逗号
  • ; 分号
  • () 括号
  • ! 感叹号
  • 批处理中可能会见到的其它特殊标记符: (略)
    CR(0D) 命令行结束符
    Escape(1B) ANSI转义字符引导符
    Space(20) 常用的参数界定符
    Tab(09) ; = 不常用的参数界定符
    + COPY命令文件连接符
    * ? 文件通配符
    / 参数开关引导符
    : 批处理标签引导符

通配符(?和*)

常用来代替未具体指明的文件和数据。

  • ?代表单个字符。
  • * 代表全部字符。

转义符

用在特殊符号之前,取消特殊字符的作用.

比如:

连字符&

echo 非常^&批处理
连字符&在此命令中只当作一个字符显示到屏幕中,如果不加^那么"批处理"将被当作命令执行

| (管道)传递符
当然是传递作用,将前面一条命令的执行结果传递给后面一条命令继续执行.
比如:
echo 0123456 | find "123"
将0123456 传递给find 查找 123

|| 连接符
当前面的命令没有成功执行 则执行后面的命令 可以作判断选择用.
比如:
echo 0123456 | find "789" || echo 字符中没有789
此命令的意思是在0123456中查找字符789,如果没有找到则继续执行后面的命令,
即在屏幕中显示"字符中没有789",如果找到了,也就是如果前面是0123456789的话则停止继续执行||后面的命令,而是在屏幕中直接显示"0123456789".

&& 连接符
当前面的命令成功执行 再执行后面的命令
比如:
echo 0123456 | find "123" && echo 字符中含有123
这个命令跟||刚好相反.

& 连接符
无论前面的命令是否成功执行 都执行后面的
比如:
echo 0123456 | find "789" & echo 字符中含有123
虽然没有成功到789 但还是会执行echo 命令

> 定向符
将输出的内容重定向到指定(文本中)
比如
echo 123456789>1.txt
输出字符串到1.txt中
如果是 >nul 则是输出到空设备中 起屏蔽屏幕输出的作用
比如
pause>nul 将命令的提示屏蔽掉

>> 定向符(追加)
将输出内容写入指定(文本中)
注意,">“将覆盖文本中原有内容,”>>" 则是在文本的最后添加内容. ">>"追加内容时,会先换行再追加内容。

比如

echo 123>1.txt
echo 456>>1.txt

文本中有两行 分别是 123和456
如果echo 456>1.txt
那么 原有文本中的123将会替换成456.

< 输入定向符
从指定的(文本)输入内容
一般用于set /p
比如

echo 456>1.txt
set /p wind=<1.txt

这样 1.txt第一行内容就被赋值给wind了
本来set /p 这个命令是用来设置给用户输入字符的,但是=后用<1.txt,
意思是从1.txt文件中读取信息给SET /P ,而不需要用户输入.

对批处理中常用符号的详细解

部分在命令在命令行和文件中的写法不同。

我对常用符号的讲解做如下限定:

1、收集批处理中经常用到的符号;
2、每个常用符号,只讲述最常用的功能;深入的用法留待将来介绍;

 这样限定的原因,一是让新手系统地接触最常用符号的常用功能,不至于一开始就陷入技术细节中难以自拔;二是有些符号的用法非常罕见,没有特定的需求可以忽略掉,比如句柄复制符号;三是有些高深的内容本人也没有完全消化,只解说一鳞半爪难免会误人子弟,比如 set /a 中的^、!等符号;

1、@

一般在它之后紧跟一条命令或一条语句,则此命令或语句本身在执行的时候不会显示在屏幕上。请把下面的代码保存为test.cmd文件,然后运行,比较一下两条echo语句在屏幕上的输出差异:

echo a
@pause
@echo b
@pause

脚本test.cmd运行结果

C:\Users\jsword\Desktop>echo a
a
请按任意键继续. . .

2、%、%%

百分号用在不同的场合,有不同的含义:
  ① 当百分号成对出现,并且其间包含非特殊字符时,一般做变量引用处理,比如:%var%、%str%。把以下代码保存为批处理文件,运行后观察屏幕显示结果:

@echo off
set str=abc
echo 变量 str 的值是: %str%
pause

在屏幕上将显示这样的结果:

变量 str 的值是: abc
按任意键继续...

另外,百分号作为变量引用还有一种特殊形式,那就是对形式参数的引用,此时,单个百分号后面紧跟0~9这10个数字,如%0、%1,请看演示代码:

@echo off
if defined str goto next
set str=
set /p str=请把文件拉到本窗口后回车:
call "%~0" %str%
pause
exit
:next
cls
echo 本批处理文件完整路径为:"%~0"
echo 拖到本窗口的文件完整路径为:"%~1"
goto :eof

执行:输入tife

请把文件拉到本窗口后回车:tife

本批处理文件完整路径为:"C:\Users\jsword\Desktop\td.cmd"
拖到本窗口的文件完整路径为:"tife"
请按任意键继续. . .

② 出现在 set /a 语句中时,表示两数相除取余数,也就是所谓的模运算,它在命令行窗口和批处理文件中的写法略有差异:在命令行窗口中,只需要单个的%,在批处理文件中,需要连续两个百分号,写成%%。
  例如:在命令行窗口中,运行 set /a num=4%2 ,则结果将显示0,因为4除以2的余数为0;如果保存为批处理文件,则此语句将略有改变:

@echo off
set /a num=4%%2
echo 4除以2的余数为 %num%
pause

③ 转义符号:如果要显示%本身时,需要在前面用%来转义。例如:

@echo off
echo 一个百分号:%%
echo 两个百分号:%%%%
echo 三个百分号:%%%%%%
pause

④ 注释: 2个%%间的字符若表示的不是变量引用,则当做(行间)注释处理。

执行时注释不显示

@echo on
%show file list%
dir
pause

3、: 和 ::

① 以:打头的单个的:表示该行是一个标签,它之后的内容是一个标签段,如:test,则表示:test之下的内容是标签段,而test是这个标签段的名,可以用 goto test 、goto :test 跳转到该标签段或用 call :test 调用该子过程;而连续两个冒号打头表示该行内容为注释内容,实际上,:: 是个无效的标签名,:加上空格同样可以起到注释的作用,此时,::的功能和注释命令rem相同;但是,rem 注释语句中的某些命令符号如重定向符号和管道符号还是会执行,而如果用::来注释的时候,与::同处一行的所有命令或符号直接被命令解释器忽略掉,无形中提高了注释的兼容性和整个程序的执行效率,并且在众多的命令语句中更显得醒目,所以,注释语句推荐使用::的格式
  ②在 set 语句中:和~同时使用时,: 起到截取字符串的功能。假设 set str=abcde,那么,set var=%str:~0,1% 表示截取字符串abcde的第一个字符;和=同时使用时,起到替换字符串的功能。假设:set str=abc:de,那么,set var=%str:a=1% 则表示把字符串abc:de中的a替换为1,set var=%str::=2% 则表示把字符串abc:de中的:替换为2;

4、~

① 用在 set 语句中,和:同时使用时,起到截取字符串的功能,请参考上一条的解释;
  ② 用在 set /a 语句中时,它是一元运算符号,表示将操作数字按位取反,例如,set /a num=~1的执行结果是-2,set /a num=~0的结果是-1
  ③ 用在for语句中,表示增强for的功能,能够提取到更多的信息。例如:在批处理文件的for语句中:%%i表示去掉第一对外侧引号,%%zi表示获取文件的大小(以字节为单位),%%ni表示获取文件名,%%xi表示获取扩展名(带点号)……它们可以组合使用,如%%~nxi表示获取文件名和后缀名。

5、>、>>

一般而言,>表示用新内容覆盖原文件内容,>>表示向原文件追加内容,此时,它们以重定向符号的身份出现;如果用在 set /a 语句中,则>表示分组,>>表示逻辑移位;

6、|

一般而言,它以管道符号的身份出现,表示把在它之前的命令或语句的执行结果作为在它之后的命令或语句的处理对象,简而言之,就是把它之前的输出作为它之后的输入,例如:echo abcd|findstr “b”,表示把echo abcd的执行结果,作为findstr “b” 的执行对象,也就是在字符串abcd中查找b字符;如果test.txt中有abcd字符串,则该语句与 findstr “b” test.txt 具有同样的效果;

7、^

一般而言,^以转义字符的身份出现。因为在cmd环境中,有些字符具备特殊功能,如>、>>表示重定向,|表示管道,&、&&、||表示语句连接……它们都有特定的功能,如果需要把它们作为字符输出的话,echo >、echo | ……之类的写法就会出错——cmd解释器会把它们作为具有特殊功能的字符对待,而不会作为普通字符处理,这个时候,就需要对这些特殊字符做转义处理:在每个特殊字符前加上转义字符^,因此,要输出这些特殊字符,就需要用 echo ^>、echo ^|、echo ||、echo ^^……之类的格式来处理;

8、&

一般而言,&表示两条命令或语句同时执行的意思。如 echo a&echo b,将在屏幕上同时显示a和b字符。当几条语句含义近似或作用相同且没有先后的顺序之别时,启用&符号连接这些语句将会增加程序的可读性;

9、&&、||

这是一对含义截然相反的命令符,&&表示如果它之前的语句成功执行,将执行它之后的语句,而||则表示如果它之前的语句执行失败,将执行它之后的语句;在某些场合,它们能替代 if……else…… 语句;例如:

@echo off
md test&&echo 成功创建文件夹test||echo 创建文件夹test失败
pause

效果等同于如下代码:

@echo off
md test
if "%errorlevel%"=="0" (echo 成功创建文件夹test) else echo 创建文件夹test失败
pause

10、()

小括号对经常出现在for语句和if语句中,还有一些特定场合;在for和if语句中属于语句格式的要求,例如:
  ① for %%i in (语句1) do (语句2):在这条语句中,语句1必须用括号对包围,而语句2的括号对则可视情况予以抛弃或保留:如果语句2是单条语句或用&、&&、||等连接符号连接的多条语句,括号对可以抛弃,如果语句2是有逻辑先后关系的多条语句集合,则必须保留括号对,并且,多条语句必须断行书写;例如:

@echo off
for %%i in (a b c) do echo %%i&echo --------
pause
也可以改写为:
@echo off
for %%i in (a b c) do (
    echo %%i
    &echo --------
)
pause

② if 条件 (语句1) else (语句2):如果没有else部分,则语句1的括号对可有可无;如果有else部分,则语句1中的括号对必须保留,此时,语句2中的括号对保留与否,和上一点类似。例如:

@echo off
if exist test.txt echo 当前目录下有test.txt
pause
@echo off
if exist test.txt (echo 当前目录下有test.txt) else echo 当前目录下没有test.txt
pause
@echo off
if exist test.txt (echo 当前目录下有test.txt) else (
    echo 当前目录下没有test.txt
    pause
    cls
    echo 即将创建test.txt文件
    cd.>test.txt&&echo 成功创建test.txt
)
pause

③ 特定场合下使用括号对,不但可以使代码逻辑清晰,增强可读性,还可能会减少代码量。比如用echo语句构造多行文本内容的时候:

@echo off
(
echo 第一行
echo 第二行
echo 第三行
)>test.txt
start test.txt

如果不使用括号对的话,则需要使用如下代码:

@echo off
echo 第一行>test.txt
echo 第二行>>test.txt
echo 第三行>>test.txt
start test.txt ::open test.txt

11、+、-、*、/

在 set /a 语句中,这些符号的含义分别为:加、减、乘、除。例如:set /a num=1+2-34/5。需要注意的是,这些运算符号遵循数学运算中的优先级顺序:先乘除后加减,有括号的先算括号,并且,直接忽略小数点,因此,刚才那个算式的结果是1而不是0或0.6。
  另外,有可能会在代码中看到这样的写法:set /a num+=1、set /a num-=1、set /a num=1 和 set /a num/=1,这些表示累加、累减、累乘、累除,步长都是1,展开后的完整写法为:set /a num=num+1、set /a num=num-1、set /a num=num*1 和 set /a num=num/1(set /a 语句中,变量引用可以忽略百分号对或感叹号对,set /a num=%num%+1 与 set /a num=num+1 等同)

12、equ、neq、lss、leq、gtr、geq

这几个命令符是if语句中常用到的数值比较符号,取自英文的关键字母,具体的含义为:

命令符号            含义                 英文解释
EQU                等于                 equal
NEQ                不等于               not equal
LSS                少于                 less than
LEQ                少于或等于            less than or equal
GTR                大于                 greater than
GEQ                大于或等于            greater than or equal

到此这篇关于windows中dos批处理之命令特殊符号通配符与转义符的文章就介绍到这了,更多相关windows中dos批处理内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • windows dos命令解除端口占用的问题

    目录 Dos命令查看端口占用 查看端口使用情况 查看被占用的端口信息 例如:9002 查看pid对应的进程 结束进程 解除占用 Dos命令查看端口占用 查看端口使用情况 netstat -ano 查看被占用的端口信息 例如:9002 netstat -ano | findstr 9002 查看pid对应的进程 tasklist | findstr 20312 结束进程 解除占用 taskkill /f /t /im java.exe 到此这篇关于windows dos命令 解除端口占用的文章就介

  • WINDOWS下使用DOS命令行连接oracle数据库

    如何通过计算机的命令提示符(cmd.exe)连接 Oracle 数据库? DOS命令行连接oracle数据库 假设有一个 Oracle 数据库信息如下: IP:192.168.0.1 SID:orcl 端口号:1521 用户名:testuser 密码:123456 在本地客户端中配置的服务名为:server1 1.通过服务名连接数据库 sqlplus userName/userPassword@netServiceName 例:sqlplus  testuser/123456@server1 2

  • 用dos命令实现导入、导出windows计划任务详解

    新手指南 要把公司软件用的计划任务用命令行批处理的方式导入一个新的系统里,所有通过查资料,一个可以用来导出和导入的脚本. 导出用法为:脚本名称+空格+export 导入用法为:脚本名称+空格+import 以下为内容和注释: rem 以下为关闭命令打印 @echo off rem 以下为清屏 cls rem 以下为设置此批处理所有的环境变量只应用于当前批处理 setlocal EnableDelayedExpansion rem 以下为设置变量 set runasUsername=domain\

  • python3调用windows dos命令的例子

    最近游戏项目在多个国家上线,每个国家都对应两份儿svn目录(一份是本地策划目录,一份是线上目录).于是乎维护变得很烦躁.需要先更新本地策划svn目录,然后把更新的文件拷贝到对应的线上目录,然后提交线上svn目录,然后维护服务器.多个国家就要重复多次类似的更新,拷贝,提交的操作,还要格外注意不能手抖,出现少复制的错误.这种重复的操作很适合写一个工具来完成. 于是考虑使用python来写这个工具,最基本的操作就是使用python调用svn命令.因为windows安装svn后是没有svn命令行的,所以

  • dos下通过wmic命令查看硬盘和内存/CPU信息(windows自带命令查看硬件信息)

    如何在windows系统自带命令查看硬件信息,怎样dos命令查看硬盘和内存/CPU信息?最直接的是:开始→运行→CMD打开命令提示符,在该窗口下输入systeminfo执行,即可看到几乎所有想知道的系统信息,甚至包括机器上已安装的网卡及其IP. 问题描述: 如何从系统中 查看主板上内存条的数量.最佳答案: 在cmd命令下 输入:wmic memorychip list brief 或者 wmic MEMPHYSICAL list brief 就会看到内存条的数量 rem 查看cpu wmic c

  • Java调用Windows的DOS命令的方法

    这是一个使用java代码调用dos命令的实例,在这里我就不多说,直接上代码,代码如下: 复制代码 代码如下: import java.io.*; /**  *  Java调用windows的DOS命令  *  实现调用Windows的ipconfig命令,然后将输出的信息通过IO流输出到控制台.  */ public class RunWindowsCommand{     public static void main(String[] args) {         InputStream

  • Windows下通过DOS命令登录MYSQL的方法

    例:MYSQL安装在 D:\ApacheServer\mysql 下 开始==>运行==>cmd,或者 按住win键+r键输入cmd 复制代码 代码如下: C:\Users\Administrator>d:      //进入D盘 D:\>cd ApacheServer\mysql\bin  //进入mysql安装目录下bin文件夹内 D:\ApacheServer\mysql\bin>mysql -h localhost -uroot -p    //进入mysql命令,随

  • windows中dos批处理之命令特殊符号通配符与转义符(推荐)

    目录 常用特殊符号 通配符(?和*) 转义符 对批处理中常用符号的详细解 1.@ 2.%.%% 3.: 和 :: 4.~ 5.>.>> 6.| 7.^ 8.& 9.&&.|| 10.() 11.+.-.*./ 12.equ.neq.lss.leq.gtr.geq 文章进行重新排版,并做了部分补充.所有命令均在win7 x64 中文旗舰版上进行测试. 常用特殊符号 @命令行回显屏蔽符 %批处理变量引导符 > 重定向符 > > 重定向符 <.&

  • Linux 命令行通配符及转义符的实现

    我们想对一类文件批量操作,例如批量查看硬盘文件属性,那么正常命令会是: [root@linuxprobe ~]# ls /dev/sda [root@linuxprobe ~]# ls /dev/sda1 [root@linuxprobe ~]# ls /dev/sda2 [root@linuxprobe ~]# ls /dev/sda3 但有些时候确实不知道分区的 通配符 星号(*)代表匹配零个或多个字符 huanyu@ubuntu:~$ ls -l /dev/sda* 问号(?)代表匹配单个

  • Dos批处理常用命令大全扫盲篇

     pause   暂停命令 find 搜索文件或文件内指定的字符串 prompt 设置命令提式符 ren   批量重名 用法:ren 1.txt 2.bat 效果:1.txt就被改为2.bat subst s: \\*.*.*.*\c$ (这个是远程映射) \\*.*.*.*将c盘下windows映视到s盘下 删除的话是  这个是使用例子:subst s: /d regedit /s 用法:regedit /s 1.reg 在批处理中运行所有注册表文件而不显示 assoc 修改文件关联 dir 

  • 批处理常用网络命令和符号篇

    2.1学习 ping  ipconfig  arp  start  shutdown  taskkill 命令 学习要点: 1.测试IP连接:ping 2.查看IP配置:ipconfig 3.解析地址:arp 4.开启命令:start 5.关闭或重启计算机:shutdown 6.关闭指定进程taskkill 一.测试IP连接:ping 用来检查网络是否通畅或者网络连接速度的命令.在此,我们只了解一些基本的参数就可以了. -n count 发送count指定的Echo数据包数. 定义向目标IP发送

  • DOS 批处理命令For循环命令详解

    for命令是一种对一系列对象依次循环执行同一个或多个命令的在命令行或批处理中运行的命令,结合一些Windows管理中的程序后,其处理功能强大.应用灵活方便程度令人刮目相看.但是,其帮助信息也因此复杂往往令初学者望而生畏,这里根据本人的学习理解,把其用法分解简化,疏忽和错误也许在所难免. 基本格式 (这里写的是在命令行里用的格式,如果是在批处理中,需要把其中%再多加个%形成%%): for /参数 %变量 in (集) do 命令 (注:上面除中文的以外,其余的是按它的格式要求书写的,大小写都行)

  • 不错的dos批处理命令详解第1/2页

    一.简单批处理内部命令简介  1.Echo 命令  打开回显或关闭请求回显功能,或显示消息.如果没有任何参数,echo 命令将显示当前回显设置.  语法  echo [{on│off}] [message]  Sample:@echo off / echo hello world  在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来. 2.@ 命令  表示不显示@后面的命令,在入侵过程中(例如

  • 终极dos批处理for循环命令详解

    格式:FOR [参数] %%变量名 IN (相关文件或命令) DO 执行的命令 作用:对一个或一组文件,字符串或命令结果中的每一个对象执行特定命令,达到我们想要的结果. 注意:在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable,而不要用 %variable.变量名称是区分大小写的,所以 %i 不同于 %I. 关于:for命令可以带参数或不带参数,带参数时支持以下参数:/d /l /r /f 下面分别解释一下 零:无参数时: FOR %variable IN (set) DO

  • DOS批处理中%~dp0等扩充变量语法详解

    有时候我们看到别人使用%~dp0 ~是扩展的意思,相当于把一个相对路径转换绝对路径 %0代指批处理文件自身 %1表示批处理文件命令行接收到的第一个参数,%2表示第二个,以此类推 %~d0 是指批处理所在的盘符,其中d代表drive %~p0 是指批处理所在的目录,其中p代表path %~dp0 是批处理所在的盘符加路径 cd %~dp0 就是进入批处理所在目录了 详细解释还可参考命令 call /? DOS批处理中%~dp0表示什么意思 (注: %0 就是该 batch 文件的文件名) 这句的意

  • DOS批处理高级教程 第二章 DOS循环for命令详解

    讲FOR之前呢,咋先告诉各位新手朋友,如果你有什么命令不懂,直接在CMD下面输入: name /? 这样的格式来看系统给出的帮助文件,比如for /? 就会把FOR命令的帮助全部显示出来!当然许多菜鸟都看不懂....所以才会有那么多批处理文章!!!!俺也照顾菜鸟,把FOR命令用我自己的方式说明下! 正式开始: 一.基本格式 FOR %%variable IN (set) DO command [command-parameters] %%variable 指定一个单一字母表示可替换的参数. (s

随机推荐