标题: [文件操作] 批处理如何判断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
把空跟有改成你要的删除命令即可。- @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
- findstr "." t.txt||echo 文本为空
复制代码
- findstr /rc:"." /rc:"$" t.txt||echo 文本为空,且不含回车符
复制代码
除非用 more 或 find 自动将回车符补齐,否则用 findstr 无法检测只含换行符的文本
作者: freesoft00 时间: 2016-10-7 12:16
本帖最后由 pcl_test 于 2016-10-7 13:01 编辑
回复 6# DiamondbacK - @echo off
- pushd %~dp0
- (for /f "delims=" %%i in ('dir /a-d /b F:\www') do (
- echo %%i
- ))>2.txt
- 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://bbs.bathome.net/) |
Powered by Discuz! 7.2 |