在发出命令之前可以检查文件大小吗?

时间:2016-10-10 18:08:17

标签: batch-file

我正在寻找一种方法来测试文件“resume.txt”,然后再执行附加的if / else语句。有没有办法检查并查看文件是否存在以及文件的大小是否为> 0KB? ...如果文件是=<我想要退出程序0KB。这可能吗?

if exist C:\Job\Resume.txt (
   echo INPUT FILE C:\Job\Resume.txt
   echo OUTPUT FILE %JOB_RESUME_LOC%\%FILE_DATETIME%_info.dat
   copy C:\Job\Resume.txt%JOB_RESUME_LOC%\%FILE_DATETIME%_info.dat
   echo File Resume.txt copied
) else (
   echo File Resume.txt not copied
) 

基本上,如果文件“Resume.txt”为0KB,则退出程序。否则,继续运行该程序。我希望这不会太混乱!

2 个答案:

答案 0 :(得分:1)

基于Stephan's comment

for %%a in ("C:\Job\Resume.txt") do set /A size=%%~za + 0
if %size% GTR 0 (
   echo INPUT FILE C:\Job\Resume.txt
   echo OUTPUT FILE %JOB_RESUME_LOC%\%FILE_DATETIME%_info.dat
   copy "C:\Job\Resume.txt" %JOB_RESUME_LOC%\%FILE_DATETIME%_info.dat
   echo File Resume.txt copied
) else (
   echo File Resume.txt not copied
)

有关说明,请阅读call /?Command Line arguments (Parameters)。下一个引用的语句适用于%a参数:

  

%~za%a扩展为文件大小

如果"C:\Job\Resume.txt"文件不存在,则%~za会扩展为空字符串。
因此,set /A size=%%~za + 0会返回0

答案 1 :(得分:0)

第一行批处理脚本。

@Where/T C:\Job:Resume.txt 2>Nul|Find /V " 0 ">Nul||Exit/B 1

如果文件不存在或者大小为零,这将退出整个脚本。然后你只需要将正常的脚本放在该行下面。