[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理 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语句中双引号必须成对默认成字符,
不知道这样的理解对不???

=============
上述三个例句的的引号只变为一个
幼苗可成大树,遮风雨

回复 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
复制代码

TOP

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

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

TOP

返回列表