Board logo

标题: [文本处理] (已解决)批处理怎么保留文本每一行特定内容? [打印本页]

作者: shchaoge    时间: 2013-5-5 01:17     标题: (已解决)批处理怎么保留文本每一行特定内容?

本帖最后由 shchaoge 于 2013-5-5 22:44 编辑

文本内容:
3 k+ B9 M4 F4 |. J7 v+ SVer 15.9.5: 加入 GT-N7100 N7100C Super IMEI 功能
' y- G- j  |* W" R4 H9 YVer 15.9.4: 加入 GT-I9300 I9300C Super IMEI 功能
5 Z( R4 u! M/ S# G' x! oVer 15.9.3: 加入 SHV-E270S 升级、解锁和修复 IMEI 功能3 e* J* k& `4 O6 f% i. y. [
Ver 15.9.2: 加入 SCH-I605 升级功能
/ V9 e9 g! r- z8 HVer 15.9.1: 加入 GT-S6312 升级、解锁和修复 IMEI 功能
$ |5 c3 r1 C4 |9 z9 e; y- c9 K6 |Ver 15.9.0: 加入 GT-I9080L 升级、解锁和修复 IMEI 功能/ M6 {! o8 ?# Z7 [1 a/ H' _
Ver 15.8.9: 修正 GT-I9300 写 EFS 硬件版本好丢失问题, u& A' j& T, r& v; c; a& g" s* }
Ver 15.8.8: 加入 GT-I8552 升级、解锁和修复 IMEI 功能
$ W+ U3 P: n) M3 g9 z" |Ver 15.8.7: 加入 GT-I8730 升级、解锁和修复 IMEI 功能- |% Z) ?" S! @( g) ~9 \+ s
Ver 15.8.6: 改进 GT-I9308 SPT 模式功能
' i/ E$ |( w: a6 }Ver 15.8.5: 加入 SCH-I879 升级、解锁和修复 IMEI 和 MEID 功能
8 M* g) S# @/ J; AVer 15.8.4: 加入 GT-E1085T 升级、解锁和修复 IMEI 功能
3 K& }$ Q3 Y. y+ C5 Q& W+ pVer 15.8.3: 加入 GT-I8262D 解锁和修复 IMEI 功能' }$ [1 x! b' P5 \: |: V. u
Ver 15.8.2: 加入 SCH-I739 升级和修复 MEID 功能
6 C! W: o& U& J0 F& f9 y! CVer 15.8.1: 加入 SCH-I619 升级、解锁和修复 MEID 功能

要求运行批处理把乱码去掉,也就是‘Ver -------------功能’的内容保留下来,结果:
Ver 15.9.5: 加入 GT-N7100 N7100C Super IMEI 功能
Ver 15.9.4: 加入 GT-I9300 I9300C Super IMEI 功能
Ver 15.9.3: 加入 SHV-E270S 升级、解锁和修复 IMEI 功能
Ver 15.9.2: 加入 SCH-I605 升级功能
Ver 15.9.1: 加入 GT-S6312 升级、解锁和修复 IMEI 功能
Ver 15.9.0: 加入 GT-I9080L 升级、解锁和修复 IMEI 功能
Ver 15.8.9: 修正 GT-I9300 写 EFS 硬件版本好丢失问题
Ver 15.8.8: 加入 GT-I8552 升级、解锁和修复 IMEI 功能
Ver 15.8.7: 加入 GT-I8730 升级、解锁和修复 IMEI 功能
Ver 15.8.6: 改进 GT-I9308 SPT 模式功能
Ver 15.8.5: 加入 SCH-I879 升级、解锁和修复 IMEI 和 MEID 功能
Ver 15.8.4: 加入 GT-E1085T 升级、解锁和修复 IMEI 功能
Ver15.8.3: 加入 GT-I8262D 解锁和修复 IMEI 功能
Ver 15.8.2: 加入 SCH-I739 升级和修复 MEID 功能
Ver15.8.1: 加入 SCH-I619 升级、解锁和修复 MEID 功能
作者: xxpinqz    时间: 2013-5-5 02:54

  1. @echo off
  2. (for /f "delims=" %%a in (1.txt) do (
  3. set "str=%%a"
  4. setlocal enabledelayedexpansion
  5. set "str=!str:Ver=Ver=Ver!"
  6. set "str=!str:能=能=!"
  7. set "str=!str:题=题=!"
  8. echo,!str!
  9. endlocal
  10. ))>$
  11. for /f "tokens=2 delims==" %%a in ($) do echo %%a
  12. del $&pause
复制代码

作者: CrLf    时间: 2013-5-5 04:59

楼上思路有点绕了哦,另,写代码时加上缩进是个好习惯~便于看清结构
  1. @echo off
  2. (for /f "delims=" %%a in (1.txt) do (
  3.    set "str=%%a"
  4.    setlocal enabledelayedexpansion
  5.    echo !str:*Ver=Ver!
  6.    endlocal
  7. ))>b.txt
  8. pause
复制代码

作者: apang    时间: 2013-5-5 10:28

回复 3# CrLf


    貌似绕一下必须的,因为一行中可能存在2个或以上的ver----功能
  1. @echo off
  2. (for /f "delims=" %%a in (a.txt) do (
  3.    set "str=%%a"
  4.    setlocal enabledelayedexpansion
  5.    set str=!str:ver=^
  6. Ver!
  7.    set str=!str:功能=功能^
  8. !
  9.    set str=!str:问题=问题^
  10. !
  11.    echo,!str!
  12.    endlocal
  13. ))>$
  14. more $|findstr /i "^ver">b.txt
  15. del $&pause
复制代码
vbs来一下
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. text = fso.OpenTextFile("a.txt",1).ReadAll
  3. With New RegExp
  4.    .Pattern = "ver.*?(功能|问题)"
  5.    .Global = True
  6.    .Ignorecase = True
  7.    For Each a in .Execute(text)
  8.       str = str & a & vbCrLf
  9.    Next
  10. End with
  11. fso.CreateTextFile("b.txt",True).Write str
  12. MsgBox "OK"
复制代码

作者: shchaoge    时间: 2013-5-5 22:41

2楼可以用  就是没生成新的文档
3楼只能解决每行前半部,后面还是乱码
4楼2个代码都OK
作者: shchaoge    时间: 2013-5-5 22:42

谢谢大家  这样节省了时间




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