Board logo

标题: [文本处理] 批处理如何判断文本中是否有内容? [打印本页]

作者: cjiabing    时间: 2010-10-14 21:26     标题: 批处理如何判断文本中是否有内容?

如何判断文本中是否有内容?或者是否为空?
分几种情况:
1、新建文本,什么都没有写入;
2、新建文本,但里面写入了3万多行的回车,文件有60KB多;
3、新建文本,里面写入N多空格,有100KB多;
4、新建文本,里面写入特殊字符;
以上四种情况只做探讨,我只要判断是否有内容(非上面四种特殊情况),是否有字母啊、汉字啊、标点符号就可以了。
原来用for和defined写过一个,可今天用搞了半天都不见得,当文本中没有任何东西时,FOR的DO后面的命令直接不执行!~

[ 本帖最后由 cjiabing 于 2010-10-14 21:29 编辑 ]
作者: Batcher    时间: 2010-10-14 21:30

判断文件大小是否为0不行吗?
作者: cjiabing    时间: 2010-10-14 21:34     标题: 回复 2楼 的帖子

上面第二、第三种情况表明判断大小是不行的!~
郁闷,398KB的空格直接把Notepad++挂了!~
作者: wc726842270    时间: 2010-10-14 21:47

给你个例子也许有用(最近刚开始看,没办法)
  1. wmic datafile where "drive='e:' and path='\\test\\' and filename='cc' and extension='bat' and filesize>'1000'" list
复制代码
意思是查找E盘下TEST目录下文件大于1KB的cc.bat文件,并显示出来
如果去掉and path='\\test\\' 那就是E盘下的所有目录查找了
作者: cjiabing    时间: 2010-10-14 21:49

  1. @echo off&setlocal enabledelayedexpansion
  2. echo 1
  3. set /p m=<1.txt
  4. if  defined m (echo 文本有内容) else (echo 空文本)
  5. ::适应情况:什么都没有;只有回车;把空格当做内容;
  6. ::无法准确判断,有回车和空格外加一个字母,竟然判断为空文本。可能是以第一行是否存在空格或者字符作为判断依据的,证据就是第一行是回车,第二行有字母,它竟然判为空文件!
  7. pause
  8. echo 2
  9. for /f "tokens=*" %%i in (1.txt) do (
  10. set k=%%i
  11. if  defined k echo 文本有内容||echo 空文本
  12. )
  13. ::当文本什么都没有的时候无法正常执行,但文本只有一个字符时可以判断。
  14. ::适应情况:……没价值??
  15. pause
  16. echo 3
  17. for /f "tokens=*" %%i in ("!m!") do (
  18. IF errorlevel 1 echo 空文本
  19. set h=%%i
  20. if  defined h echo 文本有内容||echo 空文本
  21. )
  22. ::当文本什么都没有的时候直接退出。
  23. ::适应情况:只有空格;……
  24. pause
复制代码

[ 本帖最后由 cjiabing 于 2010-10-14 22:03 编辑 ]
作者: cjiabing    时间: 2010-10-14 23:40     标题: 回复 6楼 的帖子

我在3L都说了嘛,一个只有三万多个回车没有其它字符包括没有空格的文本它的大小都有60多KB,你能判断它非空是好的。
但看题目的要求,我不是要求判断有空格和回车,而是判断是否含有字符串——字母、汉字、符号等等。在实际应用中,很少去介意文本没有其它内容外还去在意它是否有空格和回车,假如我要将文本内容赋值给一个变量,那么我需要判断这个变量是否已经被赋值了,然后执行相应的命令。
作者: 随风    时间: 2010-10-14 23:45

你的意思是说只有回车或空格的文本当作空文本处理?
  1. @echo off
  2. set "n="
  3. for /f "tokens=* delims=  " %%a in (a.txt) do (
  4.    if not "%%a"=="" set n=a
  5. )
  6. if not defined n (echo 空文本或是仅含回车、空格、全角空格) else echo 非空
  7. pause
复制代码

[ 本帖最后由 随风 于 2010-10-14 23:51 编辑 ]
作者: cjiabing    时间: 2010-10-15 01:00     标题: 回复 7楼 的帖子

不错,就这样!~很巧妙!~
作者: 乱乱    时间: 2012-10-19 09:40

回复 7# 随风


    我想问下,你的是针对某个文本的,要是我要针对一个文件夹内的文本,怎么写
谢谢。




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