如果文件为空或不存在,CMD命令会产生错误?

时间:2017-09-05 22:50:07

标签: cmd windows-7

...这样我就可以写下来了。

thatcommand myfile.txt && ECHO Is non-empty || ECHO Is empty or absent

(对于表单处理器:这完全描述了问题。)

2 个答案:

答案 0 :(得分:1)

要在代码中使用相同的方法将其限制为只有一个命令,您可以尝试使用

(>nul 2>nul findstr /m "^" "myfile.txt") && echo ok || echo empty or absent

此代码使用findstr根据匹配任何内容的正则表达式检查文件内容,并仅返回文件名(将搜索保留在第一个匹配项上)

  • 如果文件存在且不为空,则正则表达式将找到匹配项。命令清除errorlevel

  • 如果文件为空,则没有任何可能的匹配和命令 将errorlevel设置为1

  • 如果文件不存在,则命令直接失败(找不到文件),errorlevel设置为1

答案 1 :(得分:1)

正如Compo已经指出的那样,检查文件大小可能是更好的处理方式。一个选项可能是

for %%a in ("myfile.txt") do if "%%~za" gtr "0" ( echo ok ) else (echo empty or absent )
  • 如果文件存在,则会根据0检查其大小(注意:字符串比较操作用于避免大小超过2 31 的问题)。

  • 如果文件不存在,~z修饰符将返回一个空字符串,该字符串按字母顺序低于"0"