无忧启动论坛

标题: 批处理for如何以引号为分割符切分呢? [打印本页]

作者: 2012h    时间: 2012-6-17 12:10
标题: 批处理for如何以引号为分割符切分呢?
本人是批处理初学者,碰到一问题,苦思不得其解。
比如有一个文本1.txt,内容为:

  1. gh fg"hyvvv lk"ah k89 " hj_"
复制代码

我知道for的delims选项默认以空格切分,但我想以引号“"”作为切分符,我是这样写的:
  1. @echo off
  2. for /f "tokens=1-4 delims=^"" %%I in (1.txt) do (
  3. echo %%I
  4. echo %%J
  5. echo %%K
  6. echo %%L
  7. )
  8.   
  9. pause >nul
  10. exit
复制代码

运行出错:命令语法不正确。折腾好几天了,还望大大们予以解惑。谢谢了!
作者: 2012h    时间: 2012-6-17 19:57
标题: 回复 #2 pznpt 的帖子
我按照帖子介绍的方法,改为for /f tokens^=1-4^ delims^=^" %%I in (1.txt) do (
确实可行。但始终不明白为什么,越看越糊涂。。。
太深奥了,能否通俗讲解一下?
作者: pznpt    时间: 2012-6-20 08:43
楼主不赞成我的“废话”
算我多事。。。
作者: x9tian    时间: 2012-6-20 11:03
标题: 标题
原帖由 2012h 于 2012-6-17 19:57 发表
我按照帖子介绍的方法,改为for /f tokens^=1-4^ delims^=^" %%I in (1.txt) do (
确实可行。但始终不明白为什么,越看越糊涂。。。
太深奥了,能否通俗讲解一下?

双引号内的符号可以不用转义符转义!
     去掉了双引号对,用转义符代替了双引号自动转义的功能。
   批处理中双引号对里面的转义符是无法转义双引号的,因为批处理会认为你转议的那个双引号是和前面的双引号批配! 因为你写的代码有三个双引号,按双方引号批配规则最后一个双引号会自动舍弃造成语法错误!^_^




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3