Board logo

标题: Windows 命令符号的问题 [打印本页]

作者: panhong1986     时间: 2006-10-28 23:46    标题: Windows 命令符号的问题

学习DOS的过程中, 发现在看一些例子的时候, 很多人都会用到不用的符号, 而且变化很多, 有时候命令都懂, 就被卡在这里符号上, 你们能不能把这些符号集中的解释一下. 希望能全一些, 或者帮我找个地方能学习.. 谢谢了..



修改标题,以符合主题内容。原标题:DOS 符号的问题
——管理员

作者: electronixtar     时间: 2006-10-29 00:00
ntcmds.chm
作者: panhong1986     时间: 2006-10-29 13:02
OH,谢谢..
作者: lxmxn     时间: 2006-10-29 13:47


  Re : panhong1986

  下面是对你的主题的回复,同时也算是自己对批处理学习过程中遇到的字符的作用的总结吧.
  
  下面的总结,因本人能力和经验所限,因此难免会有写错的或者遗漏的地方,如果有问题,欢迎你以及大伙批评指正.下面的写的并不全面,以后再慢慢的补充上来.

[注]:\\后面的内容为注释;另外,感谢 qzwqzw 对此资料的补充。
__________________________________________________________________________________________

@
\\隐藏命令的回显。

~
\\在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。
__________________________________________________________________________________________

①:第四次补充资料于2006.10.30.
②:第四次补充资料于2006.11.08.
③:第四次补充资料于2006.01.24.
④:第四次补充资料于2007.03.13.


[ Last edited by lxmxn on 2007-4-5 at 01:37 PM ]
作者: panhong1986     时间: 2006-10-29 14:25
WOW.... THANK U SO MUCH,DUDE
作者: panhong1986     时间: 2006-10-29 14:30
难得有这么详细的解释, 等你写完全部的我把它们复制下来.
作者: redtek     时间: 2006-10-29 20:01
lxmxn写得真详细!加10分~:)
作者: hxuan999     时间: 2006-11-23 06:40
努力就有回报.呵呵
作者: love200052     时间: 2006-11-26 09:13
写的很好!多谢lxmxn!
作者: ynjzlzd     时间: 2006-12-5 21:39
麻烦楼上的高手抽空补充,我们在耐心等待.
作者: 23985940     时间: 2006-12-6 02:04
在这里真是学到东东了。高手 真是多呀!
作者: lxmxn     时间: 2006-12-8 14:10


  Quote:
Originally posted by ynjzlzd at 2006-12-5 21:39:
麻烦楼上的高手抽空补充,我们在耐心等待.


  今天已经补充了几个符号上去了,好像再没有其它的符号吧。=_=

作者: FJY206     时间: 2006-12-16 05:05
多谢了!!
作者: nt101007     时间: 2006-12-17 04:31
看不清楚呢?》
作者: lxmxn     时间: 2006-12-17 16:08


  Quote:
Originally posted by nt101007 at 2006-12-17 04:31:
看不清楚呢?》


  是什么看不清楚?我怕字体小了看不清楚,特意把字体调成比较的大的字体了,怎么还看不清呀?

作者: ccwan     时间: 2006-12-17 23:14
按住Ctrl,向上转动鼠标滑轮就变大了,向下变小。
作者: fjcyz     时间: 2006-12-23 11:21
4楼经典, 记号,收藏
作者: lovehack2006     时间: 2006-12-23 17:17
这个我喜欢!!!
作者: vlanmaster     时间: 2006-12-30 01:15
感谢楼主辛苦工作。学到东西了。
作者: wbb55bbw     时间: 2006-12-30 13:23
好贴,对我这样的菜鸟来说真的是好贴.感谢楼主.
作者: lxing20002     时间: 2007-1-1 07:33
长见识了,多谢,一直对这个也是半知不解的
作者: hxuan999     时间: 2007-1-7 08:43
你字的颜色呀.闪的人发晕....
作者: lxmxn     时间: 2007-1-7 16:51


  Quote:
Originally posted by hxuan999 at 2007-1-6 19:43:
你字的颜色呀.闪的人发晕....


  谁??这个字的颜色比较深,不好么?

作者: jimmychan     时间: 2007-1-9 04:01
有收获,谢谢各位
作者: jokoip666     时间: 2007-1-11 20:46
谢谢lxmxn
很好的资料,收藏了,呵呵
作者: oilio     时间: 2007-1-16 02:51
不错啊,最后的&&和||以前确实不知道,受教了,谢谢!
作者: eroslp     时间: 2007-1-19 09:31
长见识了,多谢,一直对这个也是半知不解的
作者: global620     时间: 2007-1-19 12:02
顶   好东西 是常常被符号弄晕  本人新手
作者: ylgzs     时间: 2007-1-22 10:54
太好了,感觉真不错,还有没有啊,呵呵
作者: tyrbl     时间: 2007-1-22 11:55
写的很好
作者: g4rr     时间: 2007-1-25 04:58
好东西.复制下来了
谢谢lxmxn
好像差了"!"这个?能补充一下吗?(感叹号)
作者: lxmxn     时间: 2007-1-25 12:00


  Quote:
Originally posted by g4rr at 2007-1-24 15:58:
好东西.复制下来了
谢谢lxmxn
好像差了"!"这个?能补充一下吗?(感叹号)


  多谢兄提醒,已经补充上去了。

作者: lizaoyou     时间: 2007-1-25 13:25
过去常被dos符号所困惑,现终有权威文章指引了,谢谢lxmxn!

有些符号不能在纯dos下使用,能补充一下吗?
作者: lxmxn     时间: 2007-1-25 13:31


  Quote:
Originally posted by lizaoyou at 2007-1-25 00:25:
过去常被dos符号所困惑,现终有权威文章指引了,谢谢lxmxn!

有些符号不能在纯dos下使用,能补充一下吗?


  你说的补充,是指出哪些符号不能在纯DOS下用,还是写出只能在纯DOS下用的符号呢?

  其实对于纯DOS,本人也只进入过几次而已,对里面的东西很不了解,只是对命令行的符号知道一点皮毛而已。如果要整理纯DOS下的符号问题,可能要请论坛其他经常和纯DOS界面打交道的朋友来完成了。

作者: lizaoyou     时间: 2007-1-25 14:40
都可以,谢回复。
作者: kawaguchi     时间: 2007-1-25 18:37
顶,学习-ing
作者: qingfushuan     时间: 2007-1-26 06:58    标题: 精品

精品能打包下载就好了
作者: zhuzhu818     时间: 2007-1-27 20:56
好贴...顶
作者: qzwqzw     时间: 2007-1-27 23:08
整理的不错

补充几点

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

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

%的作用比较复杂
单个%紧跟0-9的一个数字表示引用命令行参数
用于for中表示引用循环变量
使用两个%包含一个字符串表示引用环境变量
连续的两个%表示执行时脱为一个%
这四者的优先关系比较复杂,请尽量不要带有歧义的使用

^应该算是取消转义字符,即将所有转义字符的转义作用关闭
set/a中是按位异或
在findstr/r的[]中表示不匹配指定的字符集

&在set/a中是按位与

*在findstr/r中表示将前一个字符多次匹配

-跟在某些命令的/后表示取反向的开关

|在set/a中是按位或
在帮助文档中表示其前后两个开关、选项或参数是二选一的

\在findstr/r中表示正则转义字符

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

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

""在for/f中将表示它们包含的内容当作字符串分析
  在for/f "usebackq"表示它们包含的内容当作文件路径并分析其文件的内容
  在其它情况下表示其中的内容是一个完整的字符串,其中的>、>>、<、&、|、空格等不再转义

<在findstr/r中表示匹配单词的左边界,需要配合转义字符\使用

>在findstr/r中表示匹配单词的右边界,需要配合转义字符\使用

.在路径的\后紧跟或者单独出现时
   一个.表示当前目录
   两个.表示上一级目录
   三个.仍表示上两级目录
在路径中的文件名中出现时
   最后的一个.表示主文件名与扩展文件名的分隔
在findstr/r中表示在此位置匹配一个任意字符

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

/表示其后的字符(串)是命令的功能开关(选项)

作者: chujiafu     时间: 2007-1-28 06:39
以前只在纯Dos下搞过一点,但Cmd与Dos不大一样。学无止境呀。
作者: g4rr     时间: 2007-1-28 06:53


  Quote:
Originally posted by lxmxn at 2007-1-24 11:00 PM:


  多谢兄提醒,已经补充上去了。

不敢当啊lxmxn大大哥.呵呵
我正在入门中.对很多东西还一知半解.努力中....
再次谢谢你的帖.你的认真令小弟我十分佩服!
作者: lxmxn     时间: 2007-1-28 10:54

  Re qzwqzw:
  
  多谢兄的补充,有时间我会结合你的补充再将其完善一下的。放假没什么时间上网,所以只能拖一段时间了。

作者: tangdou313     时间: 2007-1-31 05:28
找了很久啦!终于知道啦!谢谢!
作者: electronixtar     时间: 2007-1-31 06:35


  Quote:
Originally posted by lxmxn at 2007-1-28 10:54:

  Re qzwqzw:
  
  多谢兄的补充,有时间我会结合你的补充再将其完善一下的。放假没什么时间上网,所以只能拖一段时间了。
[ ...

希望大家同步更新 wiki 。

http://www.cn-dos.net/mediawiki/ ... 5%E8%AE%B2%E8%A7%A3
作者: xuehu     时间: 2007-2-1 03:30
好东西啊
厚厚
作者: lxmxn     时间: 2007-2-2 11:27


  Quote:
Originally posted by electronixtar at 2007-1-30 17:35:



希望大家同步更新 wiki 。

http://www.cn-dos.net/mediawiki/ ... 5%E8%AE%B2%E8%A7%A3

  我更新之后会立即和wiki同步的。
作者: sjjhhx     时间: 2007-2-17 07:40
学习了,作为菜鸟很喜欢这些东西,很基础,对于我们学习却至关重要。唯有将这些基础的东西烂熟于心,才有可能写出批处理来。麻烦高手们以后多写一些这样基础的贴子,比如:符号问题,格式问题,set语法,等等吧,一些基础的知识,虽然很简单但是如果没有高手的指点,就像一层窗户纸一样没人捅,再简单对于新手也破不了,还是应该把基础打好打牢,清清楚楚的这样才行。期待这样的贴子!
作者: gne3     时间: 2007-2-17 11:06
辛苦了,楼主^^
作者: lop123     时间: 2007-2-26 08:08

作者: gne3     时间: 2007-2-27 10:45
好东西,我在顶
作者: jmz573515     时间: 2007-3-14 00:39
真是好东西!顶上去
作者: lxmxn     时间: 2007-3-14 02:22

  4楼的关于DOS符号的问题的资料已经重新完整的整理了一遍,欢迎大家参考。

作者: tianlijian     时间: 2007-3-14 03:38
多谢了,来到这里我学了不少
作者: iiiila     时间: 2007-3-15 23:06
太有才了。
作者: tyuooiu     时间: 2007-3-16 11:01
感谢lxmxn!
作者: swallow     时间: 2007-3-26 09:10
谢谢楼主,受益匪浅
作者: stornager     时间: 2007-4-4 07:10
xiexiela!!!!!!!
作者: oilio     时间: 2007-4-6 02:32
lxmxn兄,有一个小错误,快改过来。>符号写成<符号了。
作者: lxmxn     时间: 2007-4-6 02:38


  Quote:
Originally posted by oilio at 2007-4-5 13:32:
lxmxn兄,有一个小错误,快改过来。>符号写成<符号了。

多谢兄指正,已改正。

作者: htysm     时间: 2007-4-7 01:06
确实很有才的。而且还很谦虚。
作者: shaqiu     时间: 2007-4-9 03:14
太厉害了
向这位同志学习
作者: aojian12hen     时间: 2007-4-9 03:46
感谢分享..学了很多..
作者: mtiankong     时间: 2007-4-11 09:35
好贴就要支持
作者: ymbbmq     时间: 2007-4-11 12:04
谢谢!!!!!!!!
作者: waitingcd     时间: 2007-4-11 22:51
学习了。
作者: jashonx     时间: 2007-4-24 09:07
这个值得一看,是个好东西,顶!坚决顶!
作者: minmin888     时间: 2007-5-8 14:07
好东东,收藏之!
作者: minmin888     时间: 2007-5-8 14:07
好东东,收藏之!
作者: wentaowen     时间: 2007-5-10 14:59
已经全部收下的了,谢谢.
作者: qzwqzw     时间: 2007-5-27 16:53
建议按照键盘顺序重新排一下序

再做几点修正

@ 隐藏命令的回显
改为“隐藏命令行的回显”,命令的回显应由 >nul 2>nul 等句式隐藏

%
单个%紧跟0-9的一个数字表示引用命令行参数;
用于for中表示引用循环变量;
连续的两个%表示执行时脱为一个%

应改为

两个单独的%包含一个字符串,表示引用以此串为名的环境变量;
两个连续的%表示在预处理中脱为一个%;
在for语句的in子句之前,单个%(命令行)或者连续两个%(批处理)紧跟一个字符(可以是字母、数字和一些特定字符),表示指定一个循环或者遍历指标变量;
在for语句中,使用与in之前指定的指标变量相同的串,表示引用这个指标变量;
在批处理中,单个%紧跟0-9的一个数字表示引用本批处理当前执行时的命令行参数;
其它情况下,%将会被脱去(批处理)或保留(命令行)

^
取消转义字符,即将所有转义字符的转义作用关闭。
应改为
取消特定字符的转义作用,比如& | > < ! "等,但不包括%
因为转义字符的定义比较模糊,至于%究竟算不算转义字符,有待讨论

另外,考虑将句柄复制加入
>& 将一个句柄的输出写入到另一个句柄的输入中。
<& 从一个句柄读取输入并将其写入到另一个句柄输出中。
作者: lxmxn     时间: 2007-5-27 17:02
再次感谢 qzwqzw 兄对此贴的关注和建议,稍后我会把它重新整理放到批处理室去。
作者: rechard     时间: 2007-5-28 10:56
都收了.难得这么全面的介绍符号.
作者: withsiyu     时间: 2007-5-28 15:27
还可以了
作者: qjykll     时间: 2007-6-9 10:49
ddddddddd
作者: xuxinxiangxue     时间: 2007-6-11 10:39
好东西,受益匪浅啊,发现自己知道得太少啦!!顶。。。。。。。
作者: norlan     时间: 2007-6-28 17:07

作者: lm0158     时间: 2007-7-4 23:14
很好哦下来看看
作者: lm0158     时间: 2007-7-4 23:15
很好哦下来看看
作者: haiou327     时间: 2007-7-10 00:25
>>
\\命令重定向符。将其前面的命令的输出结果重新定向到其后面的设备中去,后面设备中的内容没有被覆盖,在其后面追加写入.
作者: haiou327     时间: 2007-7-10 00:25
>>
\\命令重定向符。将其前面的命令的输出结果重新定向到其后面的设备中去,后面设备中的内容没有被覆盖,在其后面追加写入.
作者: qpmgljf     时间: 2007-7-14 10:50
哇。好贴。。。顶顶顶。。。学习。。。。
作者: hxwxyz     时间: 2007-9-8 20:57
大哥级的人物就是不一样 学习了
作者: hxwxyz     时间: 2007-9-8 20:57
大哥级的人物就是不一样 学习了
作者: hlfeng     时间: 2007-9-9 18:39

作者: wmc6432107     时间: 2007-9-10 14:49
顶!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
作者: wmc6432107     时间: 2007-9-10 14:49
顶!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
作者: pjyhl82     时间: 2007-9-11 23:42
感谢大大们,学习了
作者: pjyhl82     时间: 2007-9-11 23:43
感谢大大们,学习了
作者: ab200210     时间: 2007-9-16 18:04
hao
作者: ab200210     时间: 2007-9-16 18:04
hao
作者: tusheng     时间: 2007-9-17 08:38
确实是好贴
作者: Li103Z     时间: 2007-9-18 13:48
写得很全面,也很不错。
作者: Li103Z     时间: 2007-9-18 13:48
写得很全面,也很不错。
作者: blue812     时间: 2007-10-29 16:59
很不错,谢谢!!!!!!!!!!
作者: blue812     时间: 2007-10-29 17:00
很不错,谢谢!!!!!!!!!!
作者: jxzhxch     时间: 2007-11-3 09:17
dddddddddddd
作者: jxzhxch     时间: 2007-11-3 09:17
dddddddddddd
作者: dthao     时间: 2007-11-4 07:06
顶顶
作者: dthao     时间: 2007-11-4 07:07
顶顶顶
作者: fw911     时间: 2007-11-4 10:42
谢谢lxmxn
  好好学习
作者: fw911     时间: 2007-11-4 10:43
谢谢lxmxn
  好好学习
作者: ftlwdy     时间: 2007-11-8 10:00
学习了
作者: a82930     时间: 2007-11-9 16:51
太谢谢了!
作者: jk328019419     时间: 2007-11-9 20:21
辛苦为我们新手写的经典教程啊,版主太爱你了
作者: zhouguanjie     时间: 2007-11-11 11:15
谢谢啊 有用的东西
作者: chenxing0711     时间: 2007-11-12 02:52
太感谢斑竹了
作者: nyafullee     时间: 2007-11-21 15:41    标题: 真的不错

太好了,真的不错,我顶项项
作者: sunghuang     时间: 2007-11-21 16:33
谢谢
作者: qunhui     时间: 2007-12-16 11:10
呵呵..学习了..
作者: qunhui     时间: 2007-12-16 11:10
呵呵..学习了..
作者: yulanggongwu     时间: 2007-12-16 20:30
太感谢啦
作者: dai13910     时间: 2008-1-11 14:22
可得好好谢谢 楼主
作者: joyoustar     时间: 2008-1-11 17:38
谢谢,学习了!!!
作者: binghuoxk     时间: 2008-1-17 12:35
谢谢分享
作者: allen733124     时间: 2008-2-18 16:35
受教了,多谢lxmxn!
作者: w30699     时间: 2008-2-18 16:41
看着DOS的那些命令就头晕~
作者: gujicao2005     时间: 2008-3-9 16:53
介绍得真详细,顶!!!!!!!!!!!!!!!!!!!!
作者: szww     时间: 2008-8-1 15:49
太精妙了。谢谢
作者: szww     时间: 2008-8-1 17:25
非常好。收藏学习实践
作者: haiou327     时间: 2008-8-1 23:09
再温习一遍!!!!!!!!!!!!
作者: slw218856     时间: 2008-8-20 21:20
更清楚了一些符号,谢谢
作者: cms888828     时间: 2008-8-20 23:03
好心人呀!
作者: yycup1111     时间: 2008-8-21 01:29
好东西啊
作者: zhmengjun     时间: 2008-8-21 10:24
ding!
作者: jjlc10227     时间: 2008-9-8 14:23
真是太好了,喜欢死你们了
作者: earth123xinyuan     时间: 2009-2-10 15:39
谢谢,我只能支持下你了!
作者: qunsheng     时间: 2009-2-10 16:55
感谢版主lxmxn,谢谢分享