You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

批量保存不覆盖:修改扫描器Bat脚本实现递增文件名保存

解决方案:修改扫描器脚本实现不覆盖的递增文件名

这里有个实用的修改方案,能让你的扫描脚本自动生成不重复的递增文件名(比如scan1_1.tifscan1_2.tif),彻底解决旧文件被覆盖的问题:

@echo off
setlocal enabledelayedexpansion

:: 配置基础参数(可根据需要修改)
set "base_dir=c:\Data"
set "base_name=scan1"
set "file_ext=.tif"

:: 初始化文件名计数器
set "count=1"

:: 循环查找第一个可用的文件名
:search_for_file
set "output_path=!base_dir!\!base_name!_!count!!file_ext!"
if exist "!output_path!" (
    set /a count+=1
    goto search_for_file
)

:: 调用扫描脚本,使用生成的新文件名
call DirectScan.Bat -config c:\Scanner\directscan1.xml -cs1 "!output_path!"

endlocal

代码细节解释:

  • @echo off:关闭命令行的命令回显,让执行过程更简洁清爽。
  • setlocal enabledelayedexpansion:启用延迟变量扩展,这是bat脚本处理循环变量的关键,能确保计数器的数值在循环中实时更新和读取。
  • 基础参数区:把保存路径、文件名前缀、扩展名单独提取出来,以后要修改保存位置或文件名格式时,直接改这里就行,不用动核心逻辑。
  • 循环查找逻辑:从count=1开始,每次生成带编号的文件名,检查文件是否存在;如果存在就把计数器加1,继续查找,直到找到一个不存在的文件名为止。
  • 最后调用原扫描脚本时,把生成的新文件名传递给-cs1参数,完成扫描保存。

这样修改后,每次运行脚本都会自动找到当前可用的最大编号+1的文件名,完全不用担心覆盖旧的扫描文件啦。

内容的提问来源于stack exchange,提问作者Vojtěch Roul

火山引擎 最新活动