我正在尝试使用批处理文件'run.bat'来检查文件的大小。批处理脚本是 -
setlocal
set file="C:\TestWorks\Project_Testing\new.template"
set maxbytesize=2000
FOR /F "usebackq" %%A IN ('%file%') DO set size=%%~zA
if %size% LSS %maxbytesize% (
echo File is ^< %maxbytesize% bytes
) else (
echo File is ^>= %maxbytesize% bytes
当我运行它时,它没有给出正确的输出,我得到这样的输出 -
C:\TestWorks\Project_Testing>run.bat
C:\TestWorks\Project_Testing>set file="C:\TestWorks\Project_Testing\new.template
C:\TestWorks\Project_Testing>set maxbytesize=2000
C:\TestWorks\Project_Testing>FOR /F "usebackq" %A IN ('"C:\TestWorks\Project_Testing\bootstrap.bat.template"') DO set size=%~zA
C:\TestWorks\Project_Testing>set size=794
C:\TestWorks\Project_Testing>C:\TestWorks\Project_Testing>
这里出了什么问题。
答案 0 :(得分:0)
虽然大多数代码都有效,但是有一些小问题会导致其他情况下出现更大的问题。
@echo off
setlocal enableextensions
set "file=C:\TestWorks\Project_Testing\new.template"
if not exist "%file%" goto :eof
set "maxbytesize=2000"
FOR %%A IN ("%file%") DO set "size=%%~zA"
if %size% LSS %maxbytesize% (
echo File is ^< %maxbytesize% bytes
) else (
echo File is ^>= %maxbytesize% bytes
)
的变化:
正确引用。虽然这不是失败的原因,但最好正确引用数据
for /f
旨在处理数据行。要直接获取对文件的引用,应使用简单的for
(不是,仍然不是失败的原因)。
而且,代码出现故障的原因是else
子句中缺少括号(请参阅here)
答案 1 :(得分:0)
您错过了if
语句的右括号。
在最后)
之后,通过它的寂寞在所有线上附加一个echo
,也许批神会对你微笑。