找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 33704|回复: 11

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

[复制链接]
发表于 2012-5-24 17:52:26 | 显示全部楼层 |阅读模式
  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新手,修改了一下午实在弄不懂了。。。求大大帮忙

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2012-5-24 19:09:50 | 显示全部楼层
本帖最后由 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. )
复制代码

评分

参与人数 1技术 +1 收起 理由
kmomo + 1 谢谢

查看全部评分

发表于 2012-5-24 20:11:54 | 显示全部楼层

  1. @echo off
  2. findstr "^......19" birth-source.txt
  3. pause
复制代码
 楼主| 发表于 2012-5-24 21:41:27 | 显示全部楼层
谢谢2楼和3楼的前辈,问题解决了,可是为什么导出的汉字变成了乱码啊?
发表于 2012-5-24 22:00:24 | 显示全部楼层
初学者来次学习。
发表于 2012-5-25 01:21:59 | 显示全部楼层
回复 4# kmomo


    用记事本打开birth-source.txt,文件,另存为,看看编码格式是什么
 楼主| 发表于 2012-5-25 08:53:14 | 显示全部楼层
本帖最后由 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的。
发表于 2012-5-28 15:25:41 | 显示全部楼层
回复 7# kmomo


   批处理基于ANSI工作的。。UTF8 的 似乎 不能正常显示
发表于 2012-5-28 17:17:11 | 显示全部楼层
回复 7# kmomo


    你需要先用其他方法把UTF-8转换成ANSI,再运行那个批处理。
发表于 2012-5-28 19:34:30 | 显示全部楼层
你在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
)
 楼主| 发表于 2012-5-29 15:04:31 | 显示全部楼层
你在IF里调用b变量的时候忘记了引用符,而且开了变量延迟,引用符是惊叹号

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



    谢谢大大了我一直不知道%和!的分别
..为什么不能评分了
发表于 2012-5-29 21:09:49 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 21:53 , Processed in 0.019154 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表