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

[文本处理] 求助批处理如何解析C语言生成的exe封装指令

[复制链接]
发表于 2015-12-15 17:07:42 | 显示全部楼层 |阅读模式
想做个批处理进行文本处理比如有一个txt里面有以下内容:
START_0:
随机的内容(里面有需要替换的字符串)
随机的内容(里面有需要替换的字符串)
随机的内容(里面有需要替换的字符串)
END_0



START_n:
随机的内容(里面有需要替换的字符串)
随机的内容(里面有需要替换的字符串)
随机的内容(里面有需要替换的字符串)
END_n
我想要做的是找到START_X,将START_X到END_X里面查找我想要替换的字符串,替换后将START_X到END_X的内容复制到另一个文本里,
然后发现批处理的find 只能找到该字符串并把整行复制,现在想用C语言封装个find.exe,生成一个新的findstring指令,批处理调用findstring
指令,能够找到字符串所在的坐标,方便进行替换,想问问有没有大神知道呢!!
发表于 2015-12-15 17:50:29 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p n=输入数字:
  4. (for /f "delims=" %%a in (a.txt) do (
  5.   if "%%a"=="END_!n!" set f=1
  6.   if defined f exit /b
  7.   if defined f1 echo.%%a
  8.   if "%%a"=="START_!n!:" set f1=1  
  9. ))>result.txt
复制代码
发表于 2015-12-15 18:24:54 | 显示全部楼层
这种需求...还不如用现成的第三方
发表于 2015-12-15 18:52:37 | 显示全部楼层
看完了,竟然不知道你这第三方想自己想还是让别人写。

专门为一个特殊的需求整一个第三方?想要改就得重新编译生成,真不嫌麻烦。
如果你自己会的话当然不反对。否则,sed和gawk就足够了吧。
 楼主| 发表于 2015-12-16 00:04:14 | 显示全部楼层
回复 2# flyinnet9


    非常感谢!大部分处理已经完成,只是还差某些数字替换,比如:
HEX:00         07                 05                 08                         09                   
HEX:00         07                 0f                 10                                              
HEX:00         07                 05                 08                         09         00         09
HEX:00         07                 05                 08                         09                   
上面的数字是随机的,长度也是随机的,数字与数字之间用TAB和空格隔开的,但是空格与TAB的个数 不定,我要做的处理是在每个数字前加上0x同时用,隔开,同时返回长度,如下:
lenth=5,0x00,0x07,0x05,0x08,0x09                   
lenth=4,0x00,0x07,0x0f,0x10                     
lenth=7,0x00,0x07,0x05,0x08,0x09,0x00,0x09
lenth=5,0x00,0xa7,0x05,0x08,0x09                   
我要用for/F用空格进行分割吗?但是输出的个数又不确定,请问还有什么更好的办法吗
发表于 2015-12-16 10:06:44 | 显示全部楼层
本帖最后由 flyinnet9 于 2015-12-16 10:08 编辑

返回长度表示无力
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=2 delims=:" %%a in (result.txt) do (
  4.   for %%b in (%%a) do (
  5.     set str=%%b
  6.     set str=0x!str!
  7.     set /p =!str!,<nul
  8.   )
  9.   echo.
  10. )
复制代码
发表于 2015-12-16 10:29:06 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=2 delims=:" %%l in (a.txt) do (
  3.         for %%i in (%%l) do (
  4.                 set /a n+=1
  5.                 set line=!line!,0x%%i
  6.         )
  7.         echo;length=!n!!line!
  8.         set n=&set line=
  9. )
  10. pause & exit /b
复制代码
 楼主| 发表于 2015-12-16 15:28:28 | 显示全部楼层
回复 6# flyinnet9

谢谢!!问题已解决
 楼主| 发表于 2015-12-16 15:30:20 | 显示全部楼层
回复 7# 回家路上


    非常感谢!!语句太经典了!原来批处理还可以这样,学习了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 05:59 , Processed in 0.017198 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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