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

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

想做个批处理进行文本处理比如有一个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
指令,能够找到字符串所在的坐标,方便进行替换,想问问有没有大神知道呢!!

  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
复制代码

TOP

这种需求...还不如用现成的第三方

TOP

看完了,竟然不知道你这第三方想自己想还是让别人写。

专门为一个特殊的需求整一个第三方?想要改就得重新编译生成,真不嫌麻烦。
如果你自己会的话当然不反对。否则,sed和gawk就足够了吧。
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

回复 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用空格进行分割吗?但是输出的个数又不确定,请问还有什么更好的办法吗

TOP

本帖最后由 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. )
复制代码

TOP

  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
复制代码
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

回复 6# flyinnet9

谢谢!!问题已解决

TOP

回复 7# 回家路上


    非常感谢!!语句太经典了!原来批处理还可以这样,学习了!

TOP

返回列表