windows - 检查 Windows 批处理脚本中的文件大小
问题描述
我想检查 Windows 批处理脚本中的文件大小。似乎我的脚本正在退出,而不是继续执行脚本的下一步。文件条件不应产生错误,应继续下一步。但是我必须在以下内容中遗漏一些东西或有一些不正确的地方:
:: Check size of input files
call "%DIR_BAT%\CreateLAFMessage.bat" "%~n0.bat-> %STEP_NBR% - check for size of LOM_AA_2.dat and LOM_AI.dat" %_LAF_MSG_DETAILS%
set ERROR_MSG="%DIR_IP_INTERFACES%\LOM_AA_2.dat" ZERO Byte File
set file="%DIR_IP_INTERFACES%\LOM_AA_2.dat"
set maxbytesize=0
FOR /F "usebackq" %%A IN (%file%) DO set size=%%~zA
if %size% NEQ %maxbytesize% (
echo.File is ^<> %maxbytesize% bytes
) ELSE (
goto ON_ERROR
)
set ERROR_MSG="%DIR_IP_INTERFACES%\LOM_AI.dat" ZERO Byte File
set file="%DIR_IP_INTERFACES%\LOM_AI.dat"
FOR /F "usebackq" %%A IN (%file%) DO set size=%%~zA
if %size% NEQ %maxbytesize% (
echo.File is ^<> %maxbytesize% bytes
) ELSE (
goto ON_ERROR
)
解决方案
Usebackq
您已在 for 循环中启用该选项。此选项使用不同的引用样式:
- “filenameset”中长文件名的双引号。
- “要处理的文本字符串”的单引号
- `command to process` 的反引号
因此,添加双引号会告诉 for 循环处理文件。
@echo off
set "file=%DIR_IP_INTERFACES%\LOM_AA_2.dat"
set MAXBYTESIZE=0
for /f "usebackq" %%A in ("%file%") do set /a size=%%~zA
if %size% GTR %MAXBYTESIZE% (
echo(%file% is too large
) else (
echo(%file% is ^<^> %size% bytes long
)
pause
推荐阅读
- python-3.x - Sklearn AdaBooster 和基础估计器
- trimesh - 为 trimesh 生成网格和光线交点
- android - Android Dialog Fragment RecyclerView 包装内容但基于约束的最大高度?
- ms-access - 如何在 MS Access 中安装 MROUND 功能?
- sql - 从查询创建的表中获取最大的“dauer”条目
- sql - 选择语句从不同的行返回值
- c++ - 为什么 __func__ 是小写,而 __FILE__ 和 __LINE__ 是大写?
- python - 用 np 数组中的列表替换 None 值
- wordpress - 弄乱 Apache 的配置后得到 404“未找到”
- kubernetes - 在 Kubernetes 集群中。主节点是否需要始终在集群节点中单独运行?