找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27825|回复: 4

[文本处理] [已解决]批处理里面括号也需要转义吗?

[复制链接]
发表于 2011-9-13 10:06:41 | 显示全部楼层 |阅读模式
在这段代码里,括号不转义的话,就会一闪而过
  1. @echo off
  2. (echo # This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
  3. echo #
  4. echo # This file contains the mappings of IP addresses to host names. Each   
  5. echo # entry should be kept on an individual line. The IP address should
  6. echo # be placed in the first column followed by the corresponding host name.  
  7. echo # The IP address and the host name should be separated by at least one
  8. echo # space.
  9. echo #
  10. echo # Additionally, comments ^(such as these^) may be inserted on individual
  11. echo # lines or following the machine name denoted by a '#' symbol.
  12. echo # For example:
  13. echo #
  14. echo #      102.54.94.97     rhino.acme.com          # source server
  15. echo #       38.25.63.10     x.acme.com              # x client host
  16. echo 127.0.0.1 localhost ) >E:\1.txt
  17. pause >nul
复制代码
以下代码中括号又不用转义

  1. echo (dsfdf(sdfsdf)) >>e:\1.txt
复制代码
为什么会这样呢?

评分

参与人数 1PB +2 收起 理由
CrLf + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-9-13 11:08:46 | 显示全部楼层
因为未转义的括号会造成语块的错误划分,除 for 和 if 外(可以把这两个命令看成特殊的带有条件语句的语块,这解释虽不准确,但可以帮助理解…),所有命令中出现的括号都必须转义,因为它们只是命令参数的一部分,而非语块的划分符。

评分

参与人数 1技术 +1 收起 理由
Hello123World + 1 乐于助人

查看全部评分

发表于 2011-9-13 11:23:09 | 显示全部楼层
我理解括号同其他特殊字符一样具有特殊的作用
所以在命令中用到括号就要跟其他特殊字符一样先进行转义
使之先成为普通字符(预处理前)
当cmd预处理时会去掉所有的转义符还原特殊字符原来的作用
从而使得命令正常进行~~~

评分

参与人数 1PB +5 收起 理由
CrLf + 5 乐于助人

查看全部评分

 楼主| 发表于 2011-9-13 11:44:54 | 显示全部楼层
回复 2# CrLf


    谢谢了。
针对我碰到的这个情况,应该是这样的:如下代码
(echo # Additionally, comments (such as these) may be inserted on individual)>>e:\1.txt
批处理应该是把(echo # Additionally, comments (such as these)看成是一个完整的括号,然后就出错退出了。所以需要转义。
发表于 2011-9-14 18:20:04 | 显示全部楼层
按照2楼的说法,其实就是批处理语法太混乱,( 只跟最近的一个 ) 相结合。——但是for的嵌套 () 为什么没出现这种规律?

所以代码这么修改也行:
  1. @echo off
  2. (echo # This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
  3. echo #
  4. echo # This file contains the mappings of IP addresses to host names. Each   
  5. echo # entry should be kept on an individual line. The IP address should
  6. echo # be placed in the first column followed by the corresponding host name.  
  7. echo # The IP address and the host name should be separated by at least one
  8. echo # space.
  9. echo #
  10. echo # Additionally, comments (such as these^) may be inserted on individual
  11. echo # lines or following the machine name denoted by a '#' symbol.
  12. echo # For example:
  13. echo #
  14. echo #      102.54.94.97     rhino.acme.com          # source server
  15. echo #       38.25.63.10     x.acme.com              # x client host
  16. echo 127.0.0.1 localhost ) >11.txt
  17. pause >nul
复制代码
echo # Additionally, comments (such as these^) may be inserted on individual
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 00:19 , Processed in 0.032756 second(s), 14 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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