Board logo

标题: 用for如何分离出带汉字列的文件中想要的列 [打印本页]

作者: skystar65     时间: 2008-9-24 15:23    标题: 用for如何分离出带汉字列的文件中想要的列

有个1.txt文档,里面内容摘录一部分如下: 2 博 克 图 50632 48.77 121.92 3 海 拉 尔 50527 49.22 119.75 4 图 里 河 50434 50.45 121.70 现在我想把第三列,也就是50623那列分离出来,写入2。txt文档。 for语句如此: for /f "tokens=3 delims= " %i in (1.txt) do >> 2.txt echo\%i 分离结果乱七八糟,细细看了语句,明显是汉字之间的空格干扰了delims的分离作用。 有没有什么好的办法能把这个问题解决? [ Last edited by skystar65 on 2008-9-24 at 03:25 PM ]

作者: Batcher     时间: 2008-9-24 15:33
for /f "tokens=5 delims= " %i in (1.txt) do @>>2.txt echo\%i

作者: skystar65     时间: 2008-9-24 15:38
Originally posted by Batcher at 2008-9-24 03:33 PM:
for /f "tokens=5 delims= " %i in (1.txt) do @>>2.txt echo\%i
这个代码还是不行,那几个例子只是我随时摘录的,实际上汉字行是地名,有三个字,也有四个字,示例如下: 6 齐齐哈尔 50745 47.38 123.92 7 海 伦 50756 47.43 126.97 8 富 锦 50788 47.23 131.98 9 佳 木 斯 50873 46.49 130.17 10 鸡 西 50978 45.28 130.95 11 哈 尔 滨 50953 45.75 126.77 12 牡 丹 江 54094 44.57 129.60

作者: Batcher     时间: 2008-9-24 15:48
@echo off
>2.txt type nul
for /f "tokens=1 delims=." %%a in (1.txt) do (
  setlocal enabledelayedexpansion
  set "str=%%a"
  set "str=!str:~-15,5!"
  >>2.txt echo\!str!
  endlocal
)

作者: skystar65     时间: 2008-9-24 15:59
Originally posted by Batcher at 2008-9-24 03:48 PM: [code]@echo off >2.txt type nul for /f "tokens=1 delims=." %%a in (1.txt) do ( setlocal enabledelayedexpansion set "str=%%a" set "str=!str:~-15,5!" &g ...
哥们,还是不行:)

作者: Batcher     时间: 2008-9-24 16:03
哥们,咋个不行法?
C:\Test>type 1.txt 6 齐齐哈尔 50745 47.38 123.92 7 海 伦 50756 47.43 126.97 8 富 锦 50788 47.23 131.98 9 佳 木 斯 50873 46.49 130.17 10 鸡 西 50978 45.28 130.95 11 哈 尔 滨 50953 45.75 126.77 12 牡 丹 江 54094 44.57 129.60 C:\Test>type test.bat @echo off >2.txt type nul for /f "tokens=1 delims=." %%a in (1.txt) do ( setlocal enabledelayedexpansion set "str=%%a" set "str=!str:~-15,5!" >>2.txt echo\!str! endlocal ) C:\Test>test.bat C:\Test>type 2.txt 50745 50756 50788 50873 50978 50953 54094

作者: skystar65     时间: 2008-9-24 16:14
Originally posted by Batcher at 2008-9-24 04:03 PM: 哥们,咋个不行法?
兄弟,你的思路挺好的,倒数过来,把汉字掠过,可是我这边执行起来确实问题很多。 我把原文件1.txt传上来,你可以在你那边测试下。
附件 1: 1.txt (2008-9-24 16:14, 5.67 K,下载次数: 5)

作者: Batcher     时间: 2008-9-24 16:23
你的文本列之间是用制表符tab分割的 论坛程序会把制表符转换成8个空格 运行下面的代码之前请自行把delims=后面的8个空格改成1个制表符
@echo off
>2.txt type nul
for /f "tokens=3 delims=	" %%a in (1.txt) do (
  >>2.txt echo %%a
)

作者: skystar65     时间: 2008-9-24 16:42
Originally posted by Batcher at 2008-9-24 04:23 PM: 你的文本列之间是用制表符tab分割的 论坛程序会把制表符转换成8个空格 运行下面的代码之前请自行把delims=后面的8个空格改成1个制表符 [code]@echo o ...
非常感谢!问题已经解决,我刚在ultraedit下面看了,列之间确实是拿制表符tab分割的,文档是朋友给的,没怎么细看,真没想到是tab符,这样以来问题确实很简单.