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

[文件操作] 批处理如何判断txt文本文件为空/0字节

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

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

评分人数

    • pcl_test: 发帖前先使用论坛搜索PB -4

回复 3# DiamondbacK

呵呵,表示没毛病
判定一个人是否为伸手党的标准是取决于他的态度和诚意。

TOP

回复 11# happy886rr


    就是for+echo创建的空文件,因为我看有一空行,以为是一个回车符。

TOP

回复 12# happy886rr

嗯,实际他并不知道还有其他字符能让文本看起来是空白的,但并不是0字节

TOP

回复 10# pcl_test
确实,但是他说有的文件可能只有一个回车符,这样的文件也要归为空文件,也要删除。

TOP

回复 8# freesoft00
就跟新建一个文本文件一样,并没有回车符

TOP

回复 2# happy886rr
此法对于0字节判断并不妥,可用%%~za

TOP

本帖最后由 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也可以。

TOP

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

评分人数

TOP

回复 5# freesoft00


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

按常识判断,2 的可能性更大。

TOP

回复 3# DiamondbacK


    单有一个回车,我看到文件大小还是显示0字节呀

TOP

回复 2# happy886rr


    多谢!

TOP

带回车符的话,就不是空文件,因为内容有一个回车符 (废话)。
因此文件大小也不是 0 字节。
1

评分人数

TOP

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

评分人数

TOP

返回列表