[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
又是思维定势:
原来空格一直都是我们的“多虑”
  1. for /f "eol=;tokens=1-3delims=+" %a in ("5678+678+78")do echo %a %b %c
复制代码

TOP

楼上,很好!
  1. for /f eol^=^;tokens^=1-3delims^=+ %a in ("5678+678+78")do echo %a %b %c
复制代码
在for之前,我一直认为空格本身就不能通过^转义的;
为什么在for中就是例外?
原来,^对空格转义又是我理解上的“多虑”;
这样基本可以把for的参数分割符和call参数分割统一起来;
=========================
但是这里有一点未明:
既然tokens,deliims这些关键字作为/f开关的第一参数,为什么在引号内空格又不能省略?

TOP

本帖最后由 applba 于 2011-5-25 21:20 编辑

我在补充一点,for /f的各个option之间的空格可以省略。不知道火星了吗?

::普通符号做分隔符
for /f "skip=1 tokens=3,4 delims=<>"
for /f "skip=1tokens=3,4delims=<>"

::引号做分隔符
for /f tokens^=1-3^ delims^=^"
for /f tokens^=1-3delims^=^"
2

评分人数

TOP

以引号作为分隔符确实是批处理研究中的一大突破
进而引发了对参数分隔机制的探讨
能解决很多实用的问题
那个帖子应该加精
至少是高亮
这样才能引起更多人的注意
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

本帖最后由 batman 于 2011-5-26 22:22 编辑

个人认为/f开关是for所有开关中最重要的一个,对于新手甚至部分老手要掌握这个/f开关的所有参数及其用法是有一定难度的。。。

关于eol,usebackq,skip,tokens,delims这五个/f开关下的参数,记得cn-dos的9527有一篇贴子讲解得很是透彻,只可惜现在联盟不在了。。。

所幸jm著有批处理for从入门到精通的专门教程http://bbs.bathome.net/thread-2189-1-1.html,教程中对for命令进行了深入浅出的讲解并辅以大量的代码和实例加以论证,建议大家在加入此贴讨论之前先看篇教程。。。

在这里,本人只想提醒广大的新手在书写for /f语句时,参数顺序应为"eol= usbackq skip= tokens= delims=",特别是eol和delims参数最好(先前错误地写为必须)一个在最前一个在最后,至于为什么,大家可以思考一下了。。。
***共同提高***

TOP

但是有一点我没明白,for 中,^是怎么对空格进行转义的;

call中^为什么不行,为什么call会对字符的^加倍扩展一次。

TOP

白天的时候就看到了,不过一直没理解他转义符号的意思。
就干脆在这等待你们讨论了,每次plp626一出来唇枪舌战,总能收获不少东西。哈

TOP

返回列表