[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

  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新手,修改了一下午实在弄不懂了。。。求大大帮忙
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 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

评分人数

TOP

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

TOP

谢谢2楼和3楼的前辈,问题解决了,可是为什么导出的汉字变成了乱码啊?

TOP

初学者来次学习。

TOP

回复 4# kmomo


    用记事本打开birth-source.txt,文件,另存为,看看编码格式是什么

TOP

本帖最后由 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的。

TOP

回复 7# kmomo


   批处理基于ANSI工作的。。UTF8 的 似乎 不能正常显示

TOP

回复 7# kmomo


    你需要先用其他方法把UTF-8转换成ANSI,再运行那个批处理。

TOP

你在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
)

TOP

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

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



    谢谢大大了我一直不知道%和!的分别
..为什么不能评分了
BAT真是好玩又方便的小程序

TOP

TOP

返回列表