[DOS][批处理][数字化]图片元素采集

1 篇文章 0 订阅

功能介绍:
    1、统计当前目录下所有图片幅面信息,并输出到CSV;
    2、统计各幅面页数、总页数、折合A4页数;
    3、判断图片分辨率和色彩位深,输出不合格(低于300dpi,24位色)的到错误日志;
    4、统计用时输出。

使用方法:
    1、拷贝nconvert.exe到c:\windwos目录下;
    NConvert是一个功能强大的命令行多平台批处理图像处理器,拥有80多个命令形式,兼容500种图像格式。NConvert是一款免费软件,它既没有广告或恶意捆绑,免费提供给私人或教育用途(包括非营利组织)使用。用户可以通过小额捐赠来帮助开发人员。但若作为商业用途,则必须购买许可证。

其他说明:
    1、幅画大小计算
    根据幅面报表统计软件误差值(4cm)计算,误差系数 = 4/21 * 4/29 = 0.0266(21,29为A4纸宽高),约3%。
    幅面大小定义(单位:像素):
        A4:小于A3(3508 x 4961)97%
        A3:大于A3(3508 x 4961)97%
        A2:大于A2(4961 x 7016)97%
        A1:大于A1(7016 x 9933)97%
        A0:大于A0(9933 x 14043)97%
    2、幅画折合计算
        A4=A4*1
        A3=A4*2
        A2=A4*4
        A1=A4*8
        A0=A4*16

输出CSV效果:

BAT代码:

@ECHO OFF
REM 最后修改时间 2019.07.10 16:39
title 幅面统计报表DOS版 by Gonery
@echo off&setlocal enabledelayedexpansion
cls
@echo.
@echo        ----------------------------------------
@echo.
@echo              WideReport v2.0.1.190710_Bata
@echo.
@echo                                    图幅统计报表  
@echo.
@echo        ----------------------------------------
@echo                       Copyright (c) 2019 - 2038 
@echo                                        版权所有
@echo        ----------------------------------------
@echo                        Gonery 更新 于2019.07.10
@echo.
@echo        v2.0.1更新说明:
@echo            添加操作选择;
@echo            新增明细报表内容,卷数统计,册数统计,
@echo        分册路径输出。
@echo        ----------------------------------------
@echo        v2.0.0更新说明:
@echo            增加明细统计功能。
@echo        ----------------------------------------
@echo.
pause
:menu
cls
@echo.
@echo        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@echo.
@echo        请选择要进行的操作,然后按回车
@echo.
@echo            1. 明细报表(立案庭明细单独统计)
@echo.
@echo            2. 幅面报表
@echo.
@echo            3. 立案庭明细报表
@echo.
@echo            Q. 退出
@echo.
@echo        P.S. 立案庭无案号,需单独统计明细报表
@echo.
@echo        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@echo.
@echo        案卷格式范例:
@echo	       各庭室案卷:(2019)内0123民初00001号
@echo	       立案庭案卷: MS-0101-01
@echo	             注意: 大写 “()”,小写 “-”
@echo.
set choice=
set /p choice=请开始你的表演[1、2、3、Q]:
if not \"%choice%\"==\"\" set choice=%choice:~0,1%
if /i \"%choice%\"==\"1\" goto mxbb
if /i \"%choice%\"==\"2\" goto fmbb
if /i \"%choice%\"==\"3\" goto mxla
if /i \"%choice%\"==\"Q\" goto endd
@echo 选择无效,请重新输入
@echo.
goto menu
Rem ----- sub 明细报表 -----
:mxbb
Rem 初始化,tpi总页数,id序号(案卷数),bid分册数,casename案卷号(判断是否同一案卷,用于输出格式)
del /q tmp_m*.txt>nul 2>nul
del /q 明细*.csv>nul 2>nul
set tpi=0
set id=0
set bid=0
set casename=
@echo.
@echo 明细统计正在初始化,请耐心等待. . .
Rem 获取当前路径
set np=%cd%
Rem ----- begin for 查找案卷号 -----
for /f "delims=" %%c in ('dir /ad/s/b (????)*号') do (
	Rem 进入案卷目录,获取案卷路径 cp, 案卷名 cn
	cd %%c
	set cp=%%~dpc
	set cn=%%~nc
	set /a id+=1
	::>>!np!\tmp_m2.txt set /p=!cp! <nul
	set /p=!id!,!cn!,<nul>>!np!\tmp_m2.txt
	Rem ----- begin for 查找分册 -----
	for /f %%b in ('dir /ad/b') do (
		ping -n 1 127.0.0.1 > nul
		Rem 进入分册,获取分册名,初始化计数器pi
		cd %%b
		set bn=%%b
		set pi=0
		set /a bid+=1
		Rem -----begin for 查找图片 -----
		for /f %%a in ('dir /a-d/s/b *.jpg') do (
			set /a pi+=1
			set /a tpi+=1
			@echo !tpi!  %%~nxa
		)
		Rem ----- end for 查找图片 -----
		Rem 退出分册目录
		cd..
		if not !cn!==!casename! (
			@echo !bn!,!pi!,    !cp!!cn!, >>!np!\tmp_m2.txt
		)
		if !cn!==!casename! (
			@echo ,,!bn!,!pi!,    !cp!!cn!, >>!np!\tmp_m2.txt
		)
		set casename=!cn!
	)
	Rem ----- end for 查找分册 -----
)
Rem ----- end for 查找案卷号 -----
Rem 返回到初始目录
cd !np!
@echo 明细报表>>!np!\tmp_m1.txt
@echo 案卷数:!id! 卷; 册数:!bid! 册; 总页数:!tpi! 页(折合后页数请查看 幅画报表.csv)>>!np!\tmp_m1.txt
@echo 序号,案卷号,分册,页数,路径,备注>>!np!\tmp_m1.txt
copy !np!\tmp_m*.txt !np!\明细报表.csv>nul 2>nul
del /q !np!\tmp_m*.txt
@echo.
@echo ----------------------------------------
@echo 明细报表统计完成。
@echo.
@echo 详情请查看  明细报表.csv
@echo ----------------------------------------
pause
goto menu
Rem ----- end sub -----

Rem ----- sub 幅面报表 -----
:fmbb
Rem 初始化,c幅面计算系数,a_*幅面计数器,a_*a幅面计算式,pno总计数器
set d=%date%
set t=%time%
set c=97
set a_4=0
set a_3=0
set a_2=0
set a_1=0
set a_0=0
set /a a_4a=2480*3508/100*c
set /a a_3a=3508*4961/100*c
set /a a_2a=4961*7016/100*c
set /a a_1a=7016*9933/100*c
set /a a_0a=9933*14043
set pno=0
@echo.
@echo 幅面统计正在初始化,请耐心等待. . .
Rem 删除当前目录下的统计相关临时文件
del /q tmp_f*.txt >nul 2>nul
del /q 幅面*.csv >nul 2>nul
del /q errinfo.log >nul 2>nul
@echo 图片地址,图片类型,幅面,宽*高(pix),分辨率(dpi),色彩模式>>tmp_f2.txt
Rem ----- 循环读取图片 -----
for /f %%p in ('dir /a-d/b/s *.jpg') do (
	ping /n 1 127.0.0.1 >nul 2>nul
	set /a pno+=1
	Rem ----- 调用nconvert读取图片信息 -----
	for /f "tokens=1,3" %%i in ('nconvert.exe -info %%p ^| findstr "Name Width Height Xdpi Ydpi Depth"') do (
		set %%i=%%j
	)
	Rem ----- end for -----
	set /a wxh=Width*Height
	Rem 默认全部图片为A4		
	set /a a_4+=1
	set fm=A4
	Rem 判断是否A3		
	if !wxh! geq !a_3a! (
		set /a a_3+=1
		set /a a_4-=1
		set fm=A3
	)
	Rem 判断是否A2		
	if !wxh! geq !a_2a! (
		set /a a_2+=1
		set /a a_3-=1
		set fm=A2
	)
	Rem 判断是否A1		
	if !wxh! geq !a_1a! (
		set /a a_1+=1
		set /a a_2-=1
		set fm=A1
	)
	Rem 判断是否A0
	if !wxh! geq !a_0a! (
		set /a a_0+=1
		set /a a_1-=1
		set fm=A0
	)
	Rem 输出分辨率、色彩模式不合格的图片信息
	set /a xy=!Xdpi!*!Ydpi!
	if !xy! lss 90000 (
		@echo %%p,!Xdpi!,!Ydpi!>>errinfo.log
	)
	if !Depth! lss 24 (
		@echo %%p,!Depth!>>errinfo.log
	)
	Rem 回显、输出
	@echo !pno!,%%~nxp
	@echo !Name!,!fm!,!Width!*!Height!,!Xdpi!*!Ydpi!,!Depth!位
	@echo %%p,!Name!,!fm!,!Width!*!Height!,!Xdpi!*!Ydpi!,!Depth!位>>tmp_f2.txt
)
Rem ----- end for -----
@echo 幅面统计报表>>tmp_f1.txt
::set /a tp=!a_4!+!a_3!+!a_2!+!a_1!+!a_0!
set /a atp=!a_4!+!a_3!*2+!a_2!*4+!a_1!*8+!a_0!*16
@echo 总页数:!pno! 页;折合A4:!atp! 页;(其中:A4:!a_4! 页;  A3:!a_3! 页;  A2:!a_2! 页;  A1:!a_1! 页;  A0:!a_0! 页>>tmp_f1.txt
@echo (折合页面算法:A3=A4*2;A2=A4*4;A1=A4*8;A0=A4*16)>>tmp_f1.txt
@echo 开始时间:%d% %t%  结束时间:%date% %time%>>tmp_f1.txt
copy tmp_f*.txt 幅面报表.csv >nul 2>nul
del /q tmp_f*.txt >nul 2>nul
@echo.
@echo ----------------------------------------
@echo 幅面统计完成。
@echo.
@echo 详情请查看  幅面报表.csv  错误日志 errinfo.log
@echo ----------------------------------------
pause
goto menu
Rem ----- end sub -----
Rem ----- sub 立案庭明细报表 -----
:mxla
Rem 初始化,ltpi总页数,lid序号(案卷数),
del /q tmp_l*.txt>nul 2>nul
del /q 立案*.csv>nul 2>nul
set ltpi=0
set lid=0
@echo.
@echo 明细统计正在初始化,请耐心等待. . .
Rem 获取当前路径
set lnp=%cd%
Rem ----- begin for 查找案卷号 -----
for /f "delims=" %%c in ('dir /ad/s/b ??-????-??*') do (
	cd %%c
	set lcp=%%~dpc
	set lcn=%%~nc
	set /a lid+=1
	set /a lpi=0
	Rem 不换行输出序号lid,案号lcn
	::>>!np!\tmp_m2.txt set /p=!cp! <nul
	set /p=!lid!,!lcn!,<nul>>!lnp!\tmp_l2.txt
	Rem -----begin for 查找图片 -----
	for /f %%a in ('dir /a-d/s/b *.jpg') do (
		ping -n 1 127.0.0.1 > nul
		set /a lpi+=1
		set /a ltpi+=1
		@echo !ltpi!  %%~nxa
	)
	Rem ----- end for 查找图片 -----
	cd !lnp!
	@echo !lpi!,    !lcp!!lcn!, >>!lnp!\tmp_l2.txt
)
Rem ----- end for 查找案卷号 -----
Rem 返回到初始目录
cd !lnp!
@echo 立案庭明细报表>>!lnp!\tmp_l1.txt
@echo 案卷数:!lid! 卷; 总页数:!ltpi! 页(折合后页数请查看 幅画报表.csv)>>!lnp!\tmp_l1.txt
@echo 序号,案卷号,页数,路径,备注>>!lnp!\tmp_l1.txt
copy !lnp!\tmp_l*.txt !lnp!\立案庭明细报表.csv>nul 2>nul
del /q !lnp!\tmp_l*.txt
@echo.
@echo ----------------------------------------
@echo 立案庭明细报表统计完成。
@echo.
@echo 详情请查看  明细报表.csv
@echo ----------------------------------------
pause
goto menu
Rem ----- end sub
:endd
exit

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值