本帖最后由 applba 于 2011-5-25 07:22 编辑
我觉得
引号有转义所有特殊字符(除%)的作用,大多数时候用来转义空格。
for /f后面的一串option,使用引号主要就是为了转义空格和等号,防止预处理时空格和等号作为分隔符分割多个组合的option。
这两个引号在for /f运行的时候会被丢掉,引号中的option在执行时被解释。
既然用双引号是为了转义空格等字符,自然使用^也是可以转义空格和其他特殊字符的。
一般来说只要转义了空格和等号,使用^和双引号效果是一样的。
当然双引号更简单,但是如果涉及到双引号本身做分隔符就必须使用^。
下面是测试,1.txt的内容- abcde^fg^
- abcd"efg"
- abc^de"fg
- abc"de^fg
复制代码
- @echo off
- ::^做分隔符的两种写法
- echo "^做分隔符的写法1"
- for /f "tokens=1-3delims=^" %%i in (1.txt) do echo %%j
- echo "^做分隔符的写法2"
- for /f tokens^=1-3delims^=^^ %%i in (1.txt) do echo %%j
-
- ::"做分隔符的写法
- for /f tokens^=1-3delims^=^" %%i in (1.txt) do echo %%j
- ::下面的写法提示“命令语法不正确 ”
- ::for /f "tokens=1-3 delims="" %%i in (1.txt) do echo %%j
-
- ::"和^一起做分隔符
- for /f tokens^=1-3delims^=^"^^ %%i in (1.txt) do echo %%j
复制代码 有人弄出来%做分隔符的情形吗? |