如果文件为空或不存在,什么 CMD 命令会产生错误?
What CMD command will generate an error iff a file is empty or absent?
...这样我就可以写出例如
thatcommand myfile.txt && ECHO Is non-empty || ECHO Is empty or absent
(致表单处理器:这确实完全描述了问题。)
要在您的代码中使用相同的方法将其限制为仅一个命令,您可以尝试使用
(>nul 2>nul findstr /m "^" "myfile.txt") && echo ok || echo empty or absent
此代码使用 findstr
根据匹配任何内容的正则表达式检查文件内容并仅返回文件名(在第一个匹配项上保留搜索)
如果文件存在且不为空,则正则表达式将找到一个匹配项。命令清除 errorlevel
如果文件为空,则没有任何可能的匹配和命令
将 errorlevel
设置为 1
如果文件不存在,命令直接失败(file not found)并且errorlevel
设置为1
正如 Compo 已经指出的,检查文件大小可能是更好的处理方式。一种选择可能是
for %%a in ("myfile.txt") do if "%%~za" gtr "0" ( echo ok ) else (echo empty or absent )
如果文件存在,将根据 0
检查其大小(注意:字符串比较操作用于避免大小大于 231[= 的问题24=]).
如果文件不存在,~z
修饰符将return一个空字符串,按字母顺序低于"0"
...这样我就可以写出例如
thatcommand myfile.txt && ECHO Is non-empty || ECHO Is empty or absent
(致表单处理器:这确实完全描述了问题。)
要在您的代码中使用相同的方法将其限制为仅一个命令,您可以尝试使用
(>nul 2>nul findstr /m "^" "myfile.txt") && echo ok || echo empty or absent
此代码使用 findstr
根据匹配任何内容的正则表达式检查文件内容并仅返回文件名(在第一个匹配项上保留搜索)
如果文件存在且不为空,则正则表达式将找到一个匹配项。命令清除
errorlevel
如果文件为空,则没有任何可能的匹配和命令 将
errorlevel
设置为1
如果文件不存在,命令直接失败(file not found)并且
errorlevel
设置为1
正如 Compo 已经指出的,检查文件大小可能是更好的处理方式。一种选择可能是
for %%a in ("myfile.txt") do if "%%~za" gtr "0" ( echo ok ) else (echo empty or absent )
如果文件存在,将根据
0
检查其大小(注意:字符串比较操作用于避免大小大于 231[= 的问题24=]).如果文件不存在,
~z
修饰符将return一个空字符串,按字母顺序低于"0"