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

[文本处理] 【已解决】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,则输出的文本数据为 空+回车键。
如何修改代码?恳望得到帮助。
1

评分人数

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

回复 3# 思想之翼


    已修改

TOP

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

评分人数

TOP

回复 2# bailong360

感谢帮助!
您的代码经过测试,出错:输出非文本,打不开,名称是%~nxa

TOP

本帖最后由 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. )
复制代码
符合要求否?
抱歉,顺手复制没考虑其他的了
1

评分人数

TOP

返回列表