文件的问题是它有时包含一个空行,因此大小不为零。我试过了,但是因为它有一个空行,所以它返回 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/