Board logo

标题: [代码合集] [已解决]批处理怎样提取出文本中每行指定位置的字符等于指定字符的行? [打印本页]

作者: kmomo    时间: 2012-5-24 17:52     标题: [已解决]批处理怎样提取出文本中每行指定位置的字符等于指定字符的行?

  1. del /f 1.txt
  2. setlocal enabledelayedexpansion
  3. for /f "delims= tokens=1*" %%i in (birth-source.txt) do (
  4. set a=%%i
  5. set b=%a:~6,2%
  6. if b==19 echo %%i>>1.txt)
复制代码
想法是判断第一个字符串的第78位,如果等于19,则把符合条件的所有的整行输出到1.txt中。
现在不仅不能输出,还乱码了。。。
我是BAT新手,修改了一下午实在弄不懂了。。。求大大帮忙
作者: fatcat    时间: 2012-5-24 19:09

本帖最后由 fatcat 于 2012-5-24 19:46 编辑
  1. @echo off & setlocal enabledelayedexpansion
  2. >1.txt (
  3.   for /f "tokens=*" %%i in (birth-source.txt) do (
  4.     for /f "tokens=1" %%j in ("%%i") do set "b=%%j"
  5.     if "!b:~6,2!"=="19" echo,%%i
  6.   )
  7. )
复制代码

作者: lvsehuaxue    时间: 2012-5-24 20:11

  1. @echo off
  2. findstr "^......19" birth-source.txt
  3. pause
复制代码

作者: kmomo    时间: 2012-5-24 21:41

谢谢2楼和3楼的前辈,问题解决了,可是为什么导出的汉字变成了乱码啊?
作者: 喃喃努努    时间: 2012-5-24 22:00

初学者来次学习。
作者: gawk    时间: 2012-5-25 01:21

回复 4# kmomo


    用记事本打开birth-source.txt,文件,另存为,看看编码格式是什么
作者: kmomo    时间: 2012-5-25 08:53

本帖最后由 kmomo 于 2012-5-25 08:58 编辑
回复  kmomo


    用记事本打开birth-source.txt,文件,另存为,看看编码格式是什么
gawk 发表于 2012-5-25 01:21



    birth-source.txt,文件是UTF-8的,、

bat和结果文件1.txt都是ANSI的。
作者: garyng    时间: 2012-5-28 15:25

回复 7# kmomo


   批处理基于ANSI工作的。。UTF8 的 似乎 不能正常显示
作者: gawk    时间: 2012-5-28 17:17

回复 7# kmomo


    你需要先用其他方法把UTF-8转换成ANSI,再运行那个批处理。
作者: poter    时间: 2012-5-28 19:34

你在IF里调用b变量的时候忘记了引用符,而且开了变量延迟,引用符是惊叹号

另外要用节选和替换功能的时候 例如set b=%a:~6,2%

一定要加上双引号,这样可以避免语义混淆,要这样写set “b=%a:~6,2%” 如果是变量延迟,就是set “b=!a~6,2!

你的代码这样写就对了:

@ECHO OFF
echo.
Setlocal enableDelayedExpansion
for /f "tokens=1* delims= " %%i in (1.txt) do (
set a=%%i
set "b=!a:~6,2!"
if "!b!"=="19" echo %%i>>2.txt
)
作者: kmomo    时间: 2012-5-29 15:04

你在IF里调用b变量的时候忘记了引用符,而且开了变量延迟,引用符是惊叹号

另外要用节选和替换功能的时候 ...
poter 发表于 2012-5-28 19:34



    谢谢大大了我一直不知道%和!的分别
..为什么不能评分了
作者: gawk    时间: 2012-5-29 21:09

回复 11# kmomo


http://www.bathome.net/thread-1869-1-1.html




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2