Board logo

标题: [文本处理] 【已解决】BAT:筛选文本中数据的未出现数,如何添加限制条件 [打印本页]

作者: 思想之翼    时间: 2015-3-14 19:12     标题: 【已解决】BAT:筛选文本中数据的未出现数,如何添加限制条件

本帖最后由 思想之翼 于 2015-3-14 21:22 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. pushd "D:\数据1\"
  3. set n=10
  4. for /l %%a in (0 1 9) do set /a $!n:~1!=1,n+=1
  5. for %%a in (*.txt) do (
  6.   set "str= "
  7.   setlocal
  8.   for /f "delims=" %%b in (%%~snxa) do (
  9.      for %%c in (%%b) do set "$%%c="
  10.   )
  11.   for /f "delims==$" %%b in ('set $ 2^nul') do set str=!str! %%b
  12.   echo;!str:~2!
  13.   endlocal
  14. )>"d:\数据2\%%~nxa"
  15. exit
复制代码
上述代码是提取0-9之间数据的未出现数。比如文本数据为1 3 6 8,则未出现数据为0 2 4 5 7 9
现在欲在上述代码中添加一个限制:当未出现数的个数大于5时,输出的文本数据为 空+回车键。比如上例未出现数据为0 2 4 5 7 9,则输出的文本数据为 空+回车键。
如何修改代码?恳望得到帮助。
作者: bailong360    时间: 2015-3-14 20:03

本帖最后由 bailong360 于 2015-3-14 21:49 编辑
  1. @Echo Off
  2. SetLocal EnableDelayedExpansion
  3. Pushd "D:\数据\1"
  4. For %%h In (*.txt) Do (
  5. Set N=0
  6. For /F "Delims=" %%i In (%%~snxh) Do (
  7. For %%j In (%%i) Do Set .%%j=0
  8. )
  9. For /L %%i In (0 1 9) Do If Not Defined .%%i (Set /A N+=1&Set Num=!Num! %%i)
  10. (If !N! GTR 5 (Echo; ) Else Echo%Num% )>"D:\数据2\%%~nxh"
  11. )
复制代码
符合要求否?
抱歉,顺手复制没考虑其他的了
作者: 思想之翼    时间: 2015-3-14 20:22

回复 2# bailong360

感谢帮助!
您的代码经过测试,出错:输出非文本,打不开,名称是%~nxa
作者: pcl_test    时间: 2015-3-14 20:49

本帖最后由 pcl_test 于 2015-3-14 20:50 编辑

回复 1# 思想之翼
  1. @echo off&setlocal enabledelayedexpansion
  2. pushd "D:\数据1\"
  3. set n=10
  4. for /l %%a in (0 1 9) do set /a $!n:~1!=1,n+=1
  5. for %%a in (*.txt) do (
  6.   set "str= "
  7.   setlocal
  8.   for /f "delims=" %%b in (%%~snxa) do (
  9.      for %%c in (%%b) do set "$%%c="
  10.   )
  11.   set m=1
  12.   for /f "delims==$" %%b in ('set $ 2^nul') do set str=!str! %%b & set /a m+=1
  13.     if !m! gtr 5 (echo;) else (echo;!str:~2!)
  14.   endlocal
  15. )>"D:\数据2\%%~nxa"
  16. exit
复制代码

作者: bailong360    时间: 2015-3-14 21:50

回复 3# 思想之翼


    已修改




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