Board logo

标题: [文本处理] [已解决]批处理怎样从多文本批量取补集? [打印本页]

作者: 思想之翼    时间: 2012-7-24 16:02     标题: [已解决]批处理怎样从多文本批量取补集?

有若干txt文本,每个文本记录数据的格式如下所示,欲批量取等号后的数字的补集,并归入新建的文件夹。说明:相对于0123456789十个数字,4的补集是012356789;123的补集是0456789。批处理结果需要保留等号及等号前面的数值与符号,比如1+2=34,批处理后为1+2=01256789.恳望高手相助!
1+2=4
1+3=3
1+4=0
1+5=2
2+3=7
2+4=4
2+5=6
3+4=3
3+5=5
4+5=2
1-2=4
1-3=3
1-4=0
1-5=2
2-3=1
2-4=4
2-5=2
3-4=3
3-5=1
4-5=2
1*2=0
1*3=0
1*4=0
1*5=0
2*3=2
2*4=0
2*5=8
3*4=0
3*5=6
4*5=0
作者: apang    时间: 2012-7-24 19:26

代码保存到txt文档的位置,试试看吧
  1. @echo off&md New 2>nul
  2. for /f "delims=" %%a in ('dir /a-d /b *.txt') do (
  3.   set str=0123456789
  4.   (for /f "usebackq tokens=2 delims==" %%b in ("%%a") do (
  5.     set num=%%b
  6.     setlocal enabledelayedexpansion
  7.     call :lp
  8.     echo,!str!&endlocal
  9.   ))>"New\%%a"
  10. )
  11. goto :eof
  12. :lp
  13. if not "!num:~%n%!"=="" (
  14.   for %%c in ("!num:~%n%,1!") do set str=!str:%%~c=!
  15.   set/a n+=1&goto :lp
  16. )
复制代码

作者: 思想之翼    时间: 2012-7-31 01:36

您好!谢谢你回复的批处理代码!怪我没有特意说明,批处理结果需要保留等号及等号前面的数值与符号,比如1+2=34,批处理后为1+2=01256789.望大师再次帮助!不胜感激!!
作者: apang    时间: 2012-7-31 10:27

回复 3# 思想之翼

将代码保存在需要处理的txt文档的位置运行
  1. @echo off&md New 2>nul
  2. for /f "delims=" %%a in ('dir /a-d /b *.txt') do (
  3.   set str=0123456789
  4.   (for /f "usebackq tokens=1,2 delims==" %%b in ("%%a") do (
  5.     set num=%%c
  6.     setlocal enabledelayedexpansion
  7.     call :lp
  8.     echo,%%b=!str!&endlocal
  9.   ))>"New\%%a"
  10. )
  11. goto :eof
  12. :lp
  13. if not "!num:~%n%!"=="" (
  14.   for %%a in ("!num:~%n%,1!") do set str=!str:%%~a=!
  15.   set/a n+=1&goto :lp
  16. )
复制代码
PS:"高手"、"大师"听起来很扎眼,建议楼主以后尽量不用。




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