Board logo

标题: [文本处理] 批处理 for 语句中的双引号问题 [打印本页]

作者: Bat_s    时间: 2015-1-25 11:42     标题: 批处理 for 语句中的双引号问题

================
  1. @echo off
  2. set a=123"sdf"
  3. echo %a%
  4. pause
复制代码
正常显示123"sdf"
一对双引号改为一个可成功显示
  1. @echo off
  2. set a=123"sdf
  3. echo %a%
  4. pause
  5. 正常显示123"sdf
复制代码
===============
  1. @echo off
  2. for %%i in (123"sdf") do echo %%i
  3. pause
复制代码
======
正常显示 123"sdf"
问题出现在下边:
======
  1. @echo off
  2. set a=123"sdf
  3. for %%i in (%a%) do echo %%i
  4. pause
复制代码
窗口一闪即没,不能正确显示%a%的值
个人理解,双引号是不是不能 在FOR语句中单独出现,而在SET 语句可以随便付值,可以FOR语句中双引号必须成对默认成字符,
不知道这样的理解对不???

=============
上述三个例句的的引号只变为一个
作者: pcl_test    时间: 2015-1-25 12:07

回复 1# Bat_s
这有两个列子,你试试
  1. @echo off
  2. for %%i in (123^"sdf) do echo %%i
  3. pause
复制代码
  1. @echo off
  2. set a=''123!"sdf"@#$^&*()%
  3. echo %a%
  4. pause
复制代码

作者: Bat_s    时间: 2015-1-25 14:39

本帖最后由 Bat_s 于 2015-1-25 14:40 编辑

谢谢楼上,第一个FOR语句加上转义字符^是可以成功的。
每二个SET语句要加一对引号才可以
set "a=''123!"sdf"@#$^&*()%"
综上得出的结果就是:
在FOR语句中的(SET)set集中引号要成对出现,如果不成对要在引号前加上转义字符^




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2