Windows批处理文件如何检测文件> 0字节?

Bil*_*ill 2 batch-file

我在Visual Studio工具链中使用了一个Windows批处理文件,它在特定目录中创建了一个文件列表,然后使用"findstr"将此列表缩小到只包含名称包含特定字符串的文件; 然后对这些文件做一些工作.

dir /b \mypath\*.wav >wavRawList.txt

findstr /b /v "DesiredString" wavRawList.txt >wavListWithDesiredString.txt

for /f %%a in (wavListWithDesiredString.txt) do (

  [... do some stuff ...]

)
Run Code Online (Sandbox Code Playgroud)

Visual Studio经常报告来自这个批处理文件的错误,我认为这是因为wavListWithDesiredString.txt经常最终成为长度为0的文件.是否有各种各样的"if exists wavListWithDesiredString.txt"而不是"存在"我可以替换命令意味着"如果它存在且文件长度大于0"?

Joe*_*oey 5

或多或少的内联方式,使用for:

for %%x in (wavListWithDesiredString.txt) do if not %%~zx==0 (
    ...
)
Run Code Online (Sandbox Code Playgroud)

或者您可以使用子程序:

:size
set SIZE=%~z1
goto :eof
Run Code Online (Sandbox Code Playgroud)

您可以这样调用:

call :size wavListWithDesiredString.txt
if not %SIZE%==0 ...
Run Code Online (Sandbox Code Playgroud)