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

[文本处理] 批处理 for 语句中的双引号问题

[复制链接]
发表于 2015-1-25 11:42:01 | 显示全部楼层 |阅读模式
================

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

=============
上述三个例句的的引号只变为一个
发表于 2015-1-25 12:07:46 | 显示全部楼层
回复 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
复制代码
 楼主| 发表于 2015-1-25 14:39:01 | 显示全部楼层
本帖最后由 Bat_s 于 2015-1-25 14:40 编辑

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

本版积分规则

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

GMT+8, 2026-3-19 19:09 , Processed in 0.017481 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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