Board logo

标题: [求助]for命令中如何使用双引号作为列分隔符? [打印本页]

作者: HAT     时间: 2007-12-3 21:00    标题: [求助]for命令中如何使用双引号作为列分隔符?
经测试,以下两种写法都会报语法错。
@echo off
for /f "tokens=1-5 delims="" %%a in (a.txt) do (
echo %%a
)


@echo off
for /f "tokens=1-5 delims=^" %%a in (a.txt) do (
echo %%a
)


后来看到 无奈何 斑竹提到过(详见:http://www.cn-dos.net/forum/viewthread.php?tid=22634&fpage=1&highlight=sed)可以用ASII码值22来表示双引号,但当时他给出的例子是一个sed命令,我试着写了一个for命令,发现还是无法达到预期效果。
@echo off
for /f "tokens=1-5 delims=\0x22" %%a in (a.txt) do (
echo %%a
)


测试结果:
Microsoft Windows XP
(C) Copyright 1985-2001 Microsoft Corp.

C:\>type a.txt
a"b"c"d"e
C:\>test.bat
a"b"c"d"e

望各位指点。

“先把双引号替换为其它符号再处理”这个方法不能接受。

我的意思是当文件很大(几十MB的日志文件),里面的双引号不计其数时,替换双引号会花太多时间浪费太多系统资源,所以才想找个更好的方案,并不是为了吹毛求疵。

Last edited by HAT on 2007-12-5 at 08:53 PM ]

作者: bxdonne     时间: 2007-12-4 09:55
请高人指点...

作者: greenworld     时间: 2007-12-4 12:11
如果可以用双引号,偶也希望有高手指点啊.......不过偶觉得用一个 " 就可以了,没有必要用 "" 两个吧?呵呵

作者: dikex     时间: 2007-12-4 12:15
先把双引号替换为其他符号,之后再处理

作者: HAT     时间: 2007-12-5 14:22
“先把双引号替换为其它符号再处理”这个方法不能接受。

作者: zh159     时间: 2007-12-5 15:30
for 的 "options" 要用到“”来设置,所以for里的双引号比较特别,应该是不能用双引号

PS:如果确实不能接受宝马的价格,那你只能买QQ了,你不能说不能接受宝马的价格,宝马就得降到3万块(宝马自行车除外)

作者: HAT     时间: 2007-12-5 20:51
我的意思是当文件很大(几十MB的日志文件),里面的双引号不计其数时,替换双引号会花太多时间浪费太多系统资源,所以才想找个更好的方案,并不是为了吹毛求疵。

作者: abcd     时间: 2007-12-5 21:03
不用求助了,已经讨论N久了,这个话题,没办法解决的。

还是用用第三方工具吧,替换法也还是有缺陷的。

作者: zh159     时间: 2007-12-5 21:28
1、第三方工具:sed之类
2、VBS