Board logo

标题: [其他] 批处理中用for /f语句输出字符串如何带引号? [打印本页]

作者: fish    时间: 2010-8-12 17:15     标题: 批处理中用for /f语句输出字符串如何带引号?

  1. for /f %a in ("a" "") do (echo %a)
复制代码
上面这行代码的输出结果是:
a"
请前辈们详细解释一下原理,多谢了。。。
作者: plp626    时间: 2010-8-12 17:38

不知道,
关注下。。。
作者: broly    时间: 2010-8-12 18:18

  1. for /f %a in (^"a^" ^"^") do (echo %a)
复制代码

作者: 0428_hai    时间: 2010-8-12 18:54

  1. for /f %a in ("a" "") do (echo %a)
复制代码

上面这行代码的输出结果是:
a"

这段代码中set集可以看做是字符串a" ",而for中没有指定delims,所以默认以空格作为分隔符只取字符串中的第一部分a",丢弃了后面的"。
请测试以下代码:
  1. for /f "delims=" %%a in ("a" "") do (echo %%a)
复制代码
  1. for /f "tokens=1,2" %%a in ("a" "") do (echo %%a+%%b)
复制代码
以上仅是主观猜测,如有错误欢迎指正

[ 本帖最后由 0428_hai 于 2010-8-12 18:55 编辑 ]
作者: broly    时间: 2010-8-12 21:46

纠正一下。你可以不用/F参数,如:

  1. for %%a in ("a" "") do (echo %%a)
复制代码

作者: fish    时间: 2010-8-12 22:23

原帖由 0428_hai 于 2010-8-12 18:54 发表

这段代码中set集可以看做是字符串a" ",而for中没有指定delims,所以默认以空格作为分隔符只取字符串中的第一部分a",丢弃了后面的"。
请测试以下代码:
for /f "delims=" %%a in ("a" "") do (echo %%a)
for ...

前辈讲的不是没有道理,不过您的那个输出结果中还有“系统找不到文件三角形菱形”,这个是什么意思呢?还望继续执教。。。
作者: 0428_hai    时间: 2010-8-12 23:42

原帖由 fish 于 2010-8-12 22:23 发表

前辈讲的不是没有道理,不过您的那个输出结果中还有“系统找不到文件三角形菱形”,这个是什么意思呢?还望继续执教。。。

我这儿运行貌似没有任何问题呀
作者: fish    时间: 2010-8-13 00:10     标题: 回复 7楼 的帖子

前辈请过目。。。




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