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

[文本处理] [已解决]如何用批处理得出文本数字行内位数之间的差

本帖最后由 qzwifi 于 2012-10-8 13:14 编辑

例:
文本a.txt内容为:
01 02 03 04 05 06
01 02 03 04 05 07
01 02 03 04 05 08

求每一行数字位数之间的差,保存为b.txt

比如:

01 02 03 04 05 06
01与02 之间差1
02与03 之间差1
03与04 之间差1
04与05 之间差1
05与06 之间差1
所以01 02 03 04 05 06这一行位数之间的差是 1 1 1 1 1

01 02 03 04 05 07
01与02 之间差1
02与03 之间差1
03与04 之间差1
04与05 之间差1
05与07 之间差2
所以01 02 03 04 05 07这一行位数之间的差是 1 1 1 1 2

01 02 03 04 05 08
01与02 之间差1
02与03 之间差1
03与04 之间差1
04与05 之间差1
05与08 之间差3
所以01 02 03 04 05 08这一行位数之间的差是 1 1 1 1 3

------------------------

因而文本a.txt内容:
01 02 03 04 05 06
01 02 03 04 05 07
01 02 03 04 05 08

处理后得出行内位数之间的差保存为b.txt
1 1 1 1 1
1 1 1 1 2
1 1 1 1 3
1

评分人数

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

无聊我也来一个
  1. @echo off 2>nul 3>nul
  2. set a=0
  3. for /f "delims=" %%i in (目标文本.txt) do (
  4. setlocal enabledelayedexpansion
  5. for %%j in (%%i) do (
  6. set f=!e!           
  7. set e=%%j
  8. set /a oe=!e:~1!-!f:~1!
  9. set line=!line! !oe!
  10. )
  11. echo !line!
  12. endlocal   
  13. )
  14. pause
复制代码
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

回复 4# terse


    已OK,谢谢terse 及各位大哥!

TOP

回复 3# qzwifi


    把他的代码里面%%i %%j 位数之间的差是删掉

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "tokens=1*" %%i in (a.txt) do (
  3.         set /a n=1%%i&set "m="
  4.         for %%a in (%%j) do (
  5.                 set /a n-=1%%a
  6.                 set m=!m! !n!
  7.                 set /a n=1%%a
  8.         )
  9.         set m=!m:-=!
  10.         echo!m!
  11. ))>b.txt
  12. pause
复制代码
1

评分人数

    • qzwifi: 谢谢帮助!技术 + 1

TOP

回复 2# FOR

    FOR 你好,非常感谢你的代码,是可行的。但与我想要的保存的格式上有一点出入。。。

你的代码运行后是:
01 02 03 04 05 06 位数之间的差是 1 1 1 1 1
01 02 03 04 05 07 位数之间的差是 1 1 1 1 2
01 02 03 04 05 08 位数之间的差是 1 1 1 1 3

但我想要的是直接就保存为b.txt:
1 1 1 1 1
1 1 1 1 2
1 1 1 1 3

不要前面的:
01 02 03 04 05 06 位数之间的差是
01 02 03 04 05 07 位数之间的差是
01 02 03 04 05 08 位数之间的差是

我自己试修改很久都没有成功,望高手稍加完善一下,谢谢!

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1* delims= " %%i in (a.txt) do (
  3. set /a n=1%%i&set "m="
  4. for %%a in (%%j) do (
  5. set /a n-=1%%a
  6. set m=!m! !n!
  7. set /a n=1%%a
  8. )
  9. echo %%i %%j 位数之间的差是!m:-=!
  10. )
  11. pause
复制代码
1

评分人数

    • qzwifi: 谢谢帮助!技术 + 1

TOP

返回列表