【问题标题】:What CMD command will generate an error iff a file is empty or absent?如果文件为空或不存在,什么 CMD 命令会产生错误?
【发布时间】:2017-09-05 22:50:07
【问题描述】:

...这样我可以写例如

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

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

【问题讨论】:

  • 如果文件存在且大小大于 0 字节,则该文件为非空,否则为空或不存在。搜索并尝试检查文件大小的命令,如果您自己的代码失败,则返回此处使用您的代码尝试和相关解释编辑您的问题。

标签: cmd windows-7


【解决方案1】:

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

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

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

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

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

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

【讨论】:

  • 谢谢。如果您愿意将这两个答案作为两个答案发布,我会接受一个。
  • @ChrisJJ,没问题,原来答案中的两个选项现在是两个不同的答案。
【解决方案2】:

正如 Compo 已经指出的,检查文件大小可能是更好的处理方法。一种选择可能是

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

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

【讨论】:

  • 投反对票。它没有回答这个问题。注意“例如”。
  • @ChrisJJ,当然,这并不能回答公开条款中的问题,但我必须将其包括在内,因为这种方法要快得多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-24
  • 1970-01-01
相关资源
最近更新 更多