无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 6327|回复: 4
打印 上一主题 下一主题

[推荐新手]谈谈批处理中引号的用法

[复制链接]
跳转到指定楼层
1#
发表于 2012-3-14 15:02:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在批处理中用引号有点好处,就是可以增强代码的健壮性。大体可以用在下面这几个方面:

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……
2#
发表于 2012-3-14 17:13:22 | 只看该作者
好教程
楼主辛苦啊
回复

使用道具 举报

3#
发表于 2012-3-16 09:01:36 | 只看该作者
这个总结的好,经常在比较特殊的字符的地方遇到麻烦。学习了。
回复

使用道具 举报

4#
发表于 2012-4-7 07:36:08 | 只看该作者
多谢LZ分享总结经验。受益匪浅
回复

使用道具 举报

5#
发表于 2012-4-7 16:37:06 | 只看该作者
太好了,有的DOS命令在帮助中是没有办法学到的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-10-18 21:25

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表