我有一个 Esri 形状文件夹。每个形状由 5 个独立的文件组成。 (.dbf .prj .qpj .shp .shx) 如果 .shp 小于(等于)100 字节,我想删除 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
我不太了解编写批处理文件所需的代码语言。 我在 Stackoverflow 上的其他地方找到了一些代码,但它 100 字节全部删除
@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"
for /f "usebackq delims=;" %%A in (`dir /b /A:-D *.shp`) do If %%~zA LEQ %min.size% ECHO del "%%~nA.*"
*.shp
使 dir
仅返回那些名为 whatever.shp
ECHO
作为安全措施,以简单地报告要删除的文件。完成测试后,删除该行上的 echo
关键字以实际删除报告的文件。~n
修饰符仅选择文件的名称部分%%A
.*
然后说 this name - all extensions
。在应用于真实数据之前,始终验证测试目录。
这个
forfiles
解决方案怎么样:
forfiles /M *.shp /C "cmd /c if @fsize LEQ 100 echo @file, @fsize"
这会显示所有小于 100 字节的
*.shp
文件及其大小。del @file
而不是echo @file, @fsize
),它应该可以工作。