无忧启动论坛

标题: [推荐新手]谈谈批处理中引号的用法 [打印本页]

作者: sunsea    时间: 2012-3-14 15:02
标题: [推荐新手]谈谈批处理中引号的用法
在批处理中用引号有点好处,就是可以增强代码的健壮性。大体可以用在下面这几个方面:

1、在含有空格的路径中使用引号。

文件和目录中含有空格的情况,注册表项的路径中含有空格的情况下都需要使用双引号。        

比如我们要列出“C:\Program Files”目录中的文件和目录,直接用下面的命令是会提示找不到文件的:
  1. dir /b C:\Program Files
复制代码
可以用引号来包含含有空格的部分,这样就可以列出目录中的内容,一下几种情况应该都可以正常的输出内容:
  1. dir /b "C:\Program Files"
复制代码
或者省略最后面的引号:
  1. dir /b "C:\Program Files
复制代码
注意,如果此时最后面省略引号的话,必须保证后面没有空格,否则也会报错。

还可以这样:
  1. dir /b C:\Program" "Files
复制代码
甚至:
  1. dir /b C:"\Program File"s
复制代码
只要用成对的双引号将含有空格的部分引用起来就可以了。

第3种省略最后引号的情况有点特殊,这种情况下,在命令行末尾隐含有一个引号。比如:
  1. echo "www.cn-dos.net | findstr cn-dos
复制代码
并非显示的是“"www.cn-dos.net"”,而是显示的
  1. "www.cn-dos.net | findstr cn-dos
复制代码
2、在if条件判断的时候使用引号。

很多同学喜欢用这样的语句来判断一个变量和一个指定的字符串是否相等:
  1. @echo off
  2. set /p str=请输入字符串:
  3. if #%str% == #cn-dos (echo %%str%% = cn-dos) else (echo error)
复制代码
在这里,我强烈建议大家用双引号将比较的两个对象都引起来,如果不用双引号,此时如果用户输入的是一个含有空格的字符串(比如“cn dos”),此时就会报错了,而如果此处用的是双引号将“==”两边的对象引用起来,那么就算用户输入了含有空格的字符串也不会报错了。

3、使用find命令的时候使用引号。

使用find命令的时候必须使用双引号引用搜索字符,findstr可以不用引号,但是还是建议都用引号。

find 查找文件中的字符时,搜索字符和待搜索的文件参数位置可以颠倒,比如
  1. find "echo" a.bat
复制代码
  1. find a.bat "echo"
复制代码
的效果是一样的,都是在“a.bat” 文件中查找含有字符串“echo” 的行。

4、要显示一个含有特殊字符(& ||)的字符串时使用引号。

比如要在一个字符串中查找是否含有“&” 字符时用引号:
  1. echo "!@#$%&&*()_\||" | findstr "&&" >nul && echo OK
复制代码
5、在一些命令的参数中,也需要使用引号。

比如 tasklist 命令中的 /FI 的参数必须用引号括起。
  1. tasklist /FI "PID le 1024"
复制代码
搜索ProcessID小于等于1024的进程。

wmic 的 where 从句,三方工具 sed、grep、awk 的参数中,etc……
作者: zlgs    时间: 2012-3-14 17:13
好教程
楼主辛苦啊
作者: Plantsoot    时间: 2012-3-16 09:01
这个总结的好,经常在比较特殊的字符的地方遇到麻烦。学习了。
作者: 2011hnfeng    时间: 2012-4-7 07:36
多谢LZ分享总结经验。受益匪浅
作者: czjfqlcy    时间: 2012-4-7 16:37
太好了,有的DOS命令在帮助中是没有办法学到的。




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3