Windows 批处理 : how to check if a text file is blank (the file has an empty line so size is non zero)

标签 windows batch-file

文件的问题是它有时包含一个空行,因此大小不为零。我试过了,但是因为它有一个空行,所以它返回 1 而不是 0。有什么解决方法的建议吗?

set /a varTestPoints=0
for /f %%a in ('type "file.txt"^|find "" /v /c') do set /a varTestPoints=%%a

最佳答案

大小可以用

检查
for %%a in ("file.txt") do echo %%~za

其中%%~za%%a引用的文件大小

要测试文件是否只包含空行,可以使用这些命令中的任何一个

(for /f usebackq^ eol^= %%a in ("file.txt") do break) && echo has data || echo empty
(for /f "usebackq eol= " %%a in ("file.txt") do break) && echo has data || echo empty

如果 for/f 找不到包含数据的行,它会引发一个错误,可以用 &&|| 检查条件执行运算符

注意 作为 aschipfl 点,在检查空行的原始代码中,for/f 中跳过以分号开头的行的默认行为将使测试文件中以 ; 开头的行失败。现在代码还通过两种不同的方式处理这种情况。

  • 在第一个命令中,eol 子句通过为其分配一个空列表或分隔符来禁用。

  • 第二个命令为eol 分配了一个空格。虽然看起来我们只是简单地更改了有问题的字符,但当行由 for/f 分词器解析时,delims 子句优先于 eol(更多信息 here),因此在它们被视为 eol 之前,空格将作为分隔符被删除。

关于Windows 批处理 : how to check if a text file is blank (the file has an empty line so size is non zero),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33575962/

相关文章:

windows - 从批处理文件所在的目录位置启动批处理文件命令提示符

c++ - 如何使进程 B 仅在进程 A 处于事件状态时运行

c++ - Docker 中的 Microsoft 编译器

windows - 如何为 Windows 应用程序注册自定义键盘快捷键

windows - 写入批处理文件与在提示符中写入命令不同?

windows - 当你有很多 32 位和 64 位操作系统的 PC 时,如何选择 "program files"文件夹?

windows - 批处理文件在引用的参数中发送当前文件夹

windows - 有没有兼容lua 5.2.1的lua套接字库?

windows - 对于 CI,如何从 JSHint 的 NPM 版本中获取错误代码 (Windows)?

string - 从文本文件中删除二进制控制字符