标题: [代码合集] [已解决]批处理怎样提取出文本中每行指定位置的字符等于指定字符的行? [打印本页]
作者: kmomo 时间: 2012-5-24 17:52 标题: [已解决]批处理怎样提取出文本中每行指定位置的字符等于指定字符的行?
- del /f 1.txt
- setlocal enabledelayedexpansion
- for /f "delims= tokens=1*" %%i in (birth-source.txt) do (
- set a=%%i
- set b=%a:~6,2%
- if b==19 echo %%i>>1.txt)
复制代码
想法是判断第一个字符串的第78位,如果等于19,则把符合条件的所有的整行输出到1.txt中。
现在不仅不能输出,还乱码了。。。
我是BAT新手,修改了一下午实在弄不懂了。。。求大大帮忙
作者: fatcat 时间: 2012-5-24 19:09
本帖最后由 fatcat 于 2012-5-24 19:46 编辑
- @echo off & setlocal enabledelayedexpansion
- >1.txt (
- for /f "tokens=*" %%i in (birth-source.txt) do (
- for /f "tokens=1" %%j in ("%%i") do set "b=%%j"
- if "!b:~6,2!"=="19" echo,%%i
- )
- )
复制代码
作者: lvsehuaxue 时间: 2012-5-24 20:11
- @echo off
- findstr "^......19" birth-source.txt
- 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 |