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

[文件操作] [分享]批量文本重定向输出的新方案

[复制链接]
发表于 2011-5-25 17:20:19 | 显示全部楼层
cmd /q /c for /f %a in ('"for /f %a in ('echo 5678')do echo %a"')do echo %a多了一层就抓不到,这是怎么回事:cmd /q /c for /f %a in ('"for /f %a in ('"for /f %a in ('echo 1234')do echo %a"')do echo %a"' ...
plp626 发表于 2011-5-25 16:53
  1. cmd /q /c for /f %a in ('"cmd /q /c for /f %a in ('for^ /f^ %a^ in^ ('echo^ 1234'^)do^ echo^ %a')do echo %a"') do echo %a
复制代码
发表于 2011-5-25 17:33:57 | 显示全部楼层
19楼,你测试了否? 我这里照样没法抓到。。
发表于 2011-5-25 17:37:53 | 显示全部楼层
测试的时候是没加cmd /q /c的,不过有回显,所以发贴的时候就在for内加了cmd /q /c,把它去掉就看到了:
  1. cmd /q /c for /f %a in ('"for /f %a in ('for^ /f^ %a^ in^ ('echo^ 1234'^)do^ echo^ %a')do echo %a"') do echo %a
复制代码
发表于 2011-5-25 17:54:11 | 显示全部楼层
那次你那个引号的分隔符。。。
细想了下,还真是预处理的关系:
  1. cmd /q /c for /f %a in ('"for /f %a in ('for,/f,%a,in,^('echo,1234'^)do,echo,%a')do echo %a"') do echo %a
复制代码
但还在想其中缘由,,,
发表于 2011-5-25 17:58:04 | 显示全部楼层
为什么空格在这里就不能再作为参数分割符,而要用逗号,分号或者等号?
  1. cmd /q /c for /f %a in ('"for /f %a in ('for=/f=%a=in=^('echo,1234'^)do=echo=%a')do echo %a"') do echo %a
复制代码
发表于 2011-5-25 18:06:03 | 显示全部楼层
给空格加转义多此一举,这里主要是括号的原因:
  1. cmd /q /c for /f %a in ('"for /f %a in ('for /f %a in ^('echo,1234'^)do echo %a')do echo %a"') do echo %a
复制代码
参数分隔符在过程中仍旧还是:空格,制表符,逗号,分号,等号
发表于 2011-5-25 18:09:26 | 显示全部楼层
原因来自括号匹配:
  1. cmd /q /c for /f %a in ('"for /f %a in ('for /f %a in ('echo,1234'^)do echo %a')do echo %a"') do echo %a
复制代码
发表于 2011-5-25 18:29:29 | 显示全部楼层
本帖最后由 plp626 于 2011-5-25 18:52 编辑

可以这样理解for的二次预处理特性:
for ~ cmd内部的一个类似call的子过程。。。

这个内部子过程有/r /d /f 三个开关,有共同的do in 关键字,一对括号,有最多32个连续单字符名的内置变量
(相对call,若不shift则为10个);

/f 开关有eol,skip,usebackq,delims,tokens,5个关键字,他们作为/f开关的 “第一个参传递”

调用这个子过程的时候,参数分割符同call的参数分隔符;
发表于 2011-5-25 18:40:58 | 显示全部楼层
我原来以为是for /f 的嵌套输出没有按预期输出,是不是和什么句柄有关。。。所以发了那样的疑问。。。

后面验证时和括号匹配有关。。。

遂把自己对for的理解一块放这里,好作为一个思考连贯的过程。。。

在我看来没有什么不会联系到一起的。。。
发表于 2011-5-25 18:46:29 | 显示全部楼层
27# qzwqzw
应楼主的要求,每人扣除1000分。。。

呵呵,先记着(缓期执行)。。。

两位兄弟研究的热情和精神让人佩服,但你们是不是也照顾下楼主的感受,另发贴讨论不是更好吗。。。
发表于 2011-5-25 22:54:14 | 显示全部楼层
25# batman


汗,plp兄的话题激起了我的兴趣,光顾着讨论,没顾及楼主的感受,sorry...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 06:32 , Processed in 0.018334 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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