[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
我看直接用引号分割就够了吧。

TOP

10# zm900612


兄弟啊,我是随便说说的呀,没有考虑到这么多的

TOP

本帖最后由 applba 于 2011-5-25 07:22 编辑

我觉得
引号有转义所有特殊字符(除%)的作用,大多数时候用来转义空格。
for /f后面的一串option,使用引号主要就是为了转义空格和等号,防止预处理时空格和等号作为分隔符分割多个组合的option。
这两个引号在for /f运行的时候会被丢掉,引号中的option在执行时被解释。

既然用双引号是为了转义空格等字符,自然使用^也是可以转义空格和其他特殊字符的。
一般来说只要转义了空格和等号,使用^和双引号效果是一样的。
当然双引号更简单,但是如果涉及到双引号本身做分隔符就必须使用^。

下面是测试,1.txt的内容
  1. abcde^fg^
  2. abcd"efg"
  3. abc^de"fg
  4. abc"de^fg
复制代码
  1. @echo off
  2. ::^做分隔符的两种写法
  3. echo "^做分隔符的写法1"
  4. for /f "tokens=1-3delims=^" %%i in (1.txt) do echo %%j
  5. echo "^做分隔符的写法2"
  6. for /f tokens^=1-3delims^=^^ %%i in (1.txt) do echo %%j
  7. ::"做分隔符的写法
  8. for /f tokens^=1-3delims^=^" %%i in (1.txt) do echo %%j
  9. ::下面的写法提示“命令语法不正确 ”
  10. ::for /f "tokens=1-3 delims="" %%i in (1.txt) do echo %%j
  11. ::"和^一起做分隔符
  12. for /f tokens^=1-3delims^=^"^^ %%i in (1.txt) do echo %%j
复制代码
有人弄出来%做分隔符的情形吗?
1

评分人数

    • namejm: 分析得非常深入PB + 10 技术 + 1

TOP

返回列表