找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30867|回复: 4

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

[复制链接]
发表于 2015-3-14 19:12:50 | 显示全部楼层 |阅读模式
本帖最后由 思想之翼 于 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,则输出的文本数据为 空+回车键。
如何修改代码?恳望得到帮助。

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-3-14 20:03:19 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
思想之翼 + 1 感谢

查看全部评分

 楼主| 发表于 2015-3-14 20:22:23 | 显示全部楼层
回复 2# bailong360

感谢帮助!
您的代码经过测试,出错:输出非文本,打不开,名称是%~nxa
发表于 2015-3-14 20:49:04 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
思想之翼 + 1 感谢

查看全部评分

发表于 2015-3-14 21:50:04 | 显示全部楼层
回复 3# 思想之翼


    已修改
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 14:13 , Processed in 0.017895 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表