You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用批处理删除.shp≤100字节对应的整套Esri Shapefile文件

批量清理小体积Shapefile的批处理脚本

需求说明

  • 文件夹内的Esri Shapefile由5个配套文件组成:.dbf、.prj、.qpj、.shp、.shx
  • 仅当**.shp文件大小≤100字节**时,删除该Shapefile对应的整套5个文件

处理前文件示例

A.dbf
A.prj
A.qpj
A.shp (100byte)
A.shx
B.dbf
B.prj
B.qpj
B.shp (150byte)
B.shx
C.dbf
C.prj
C.qpj
C.shp
C.shx (243byte)

处理后保留文件示例

B.dbf
B.prj
B.qpj
B.shp
B.shx
C.dbf
C.prj
C.qpj
C.shp
C.shx

原有代码问题

你之前找到的批处理代码会删除所有小于100字节的文件,无法精准匹配Shapefile的整套文件需求,代码如下:

@echo off
setlocal
:: Size is in bytes
set "min.size=100"

for /f  "usebackq delims=;" %%A in (`dir /b /A:-D *.*`) do If %%~zA LSS %min.size% del "%%A"

正确的批处理脚本

@echo off
setlocal enabledelayedexpansion
:: 设置阈值:小于等于该字节数的.shp文件,其配套文件将被删除
set "threshold=100"

:: 遍历所有.shp文件
for /f "delims=" %%s in ('dir /b /A:-D "*.shp"') do (
    :: 获取当前.shp文件的大小
    set "shpSize=%%~zs"
    :: 判断大小是否≤阈值
    if !shpSize! LEQ %threshold% (
        :: 获取文件名前缀(去掉.shp后缀)
        set "prefix=%%~ns"
        :: 删除对应的5个配套文件
        del "!prefix!.dbf" "!prefix!.prj" "!prefix!.qpj" "!prefix!.shp" "!prefix!.shx"
        echo 已删除小体积Shapefile:!prefix!
    )
)

endlocal
pause

关键逻辑说明

  • setlocal enabledelayedexpansion:启用延迟变量扩展,确保循环内变量能实时更新
  • dir /b /A:-D "*.shp":仅列出当前文件夹下的.shp文件(不含子文件夹)
  • %%~zs:提取.shp文件的字节大小
  • %%~ns:提取.shp文件的前缀名(去除后缀)
  • 批量删除命令:一次性清理对应Shapefile的5个配套文件

内容的提问来源于stack exchange,提问作者Owen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 10:35:49