Board logo

标题: [文件操作] 批处理如何判断txt文本文件为空/0字节 [打印本页]

作者: freesoft00    时间: 2016-10-7 10:07     标题: 批处理如何判断txt文本文件为空/0字节

本帖最后由 pcl_test 于 2016-10-7 12:49 编辑

如题。
因为是for配合echo创建的txt文件,所以如果是空内容的话有可能带有一个回车符号。如何判断呢,如果是空就删除它。
想到的是判断大小是否为0kb?不知道是否还有其它方法?
作者: happy886rr    时间: 2016-10-7 10:32

把空跟有改成你要的删除命令即可。
  1. @echo off&(for /f %%a in (1.txt) do (set i=1))&set/a 1/i 2>NUL&&echo 有||echo 空&set/p=
复制代码

作者: DiamondbacK    时间: 2016-10-7 10:43

带回车符的话,就不是空文件,因为内容有一个回车符 (废话)。
因此文件大小也不是 0 字节。
作者: freesoft00    时间: 2016-10-7 10:57

回复 2# happy886rr


    多谢!
作者: freesoft00    时间: 2016-10-7 10:58

回复 3# DiamondbacK


    单有一个回车,我看到文件大小还是显示0字节呀
作者: DiamondbacK    时间: 2016-10-7 11:03

回复 5# freesoft00


两种可能:
1. 文件大小不是 0 字节,你看成了 0 字节。
2. 文件不含回车符,你以为含有回车符。

按常识判断,2 的可能性更大。
作者: CrLf    时间: 2016-10-7 11:13

  1. findstr "." t.txt||echo 文本为空
复制代码
  1. findstr /rc:"." /rc:"$" t.txt||echo 文本为空,且不含回车符
复制代码
除非用 more 或 find 自动将回车符补齐,否则用 findstr 无法检测只含换行符的文本
作者: freesoft00    时间: 2016-10-7 12:16

本帖最后由 pcl_test 于 2016-10-7 13:01 编辑

回复 6# DiamondbacK
  1. @echo off
  2. pushd %~dp0
  3. (for /f "delims=" %%i in ('dir /a-d /b F:\www') do (
  4. echo %%i
  5. ))>2.txt
  6. pause
复制代码
f盘的空www文件夹。批处理运行在当前目录生成的2.txt是0字节,这个属于一个回车符号吧?(不是太懂,看2.txt有一个空行)


in ('dir /a-d /b F:\www^|find /i /v "sssss"')
忘记说了,完整的代码中for中dir后使用了find过滤了一些内容。不知道这个影响不影响?如果影响结果,把find改更findstr也可以。
作者: pcl_test    时间: 2016-10-7 12:56

回复 2# happy886rr
此法对于0字节判断并不妥,可用%%~za
作者: pcl_test    时间: 2016-10-7 13:00

回复 8# freesoft00
就跟新建一个文本文件一样,并没有回车符
作者: happy886rr    时间: 2016-10-7 13:01

回复 10# pcl_test
确实,但是他说有的文件可能只有一个回车符,这样的文件也要归为空文件,也要删除。
作者: pcl_test    时间: 2016-10-7 13:17

回复 12# happy886rr

嗯,实际他并不知道还有其他字符能让文本看起来是空白的,但并不是0字节
作者: freesoft00    时间: 2016-10-7 14:19

回复 11# happy886rr


    就是for+echo创建的空文件,因为我看有一空行,以为是一个回车符。
作者: wskwfkbdn    时间: 2016-10-8 07:17

回复 3# DiamondbacK

呵呵,表示没毛病




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