今天计划使用https://github.com/hzylmf/od-annotation上的一个标记工具,工具要求必须重命名标注样本,采用前导0方式编号,共6位(000001-0000xx),保持样本编号连续。写了段批处理来批量修改文件名结果遇到坑

    预处理机制:批处理读取命令时是按行读取的(另外例如 for 命令等,其后百用一对圆括号闭合的所有语句也当作一行),在处理之前要完成必要的预处理工作,这其中就包括对度该行命令中的变量赋值。在不启用变量延迟,也不对问变量动态捕获其扩展变化时,变量在预处答理阶段不作改变)

    for循环设置变量时,请开启环境变量延迟命令
    setlocal enabledelayedexpansion
    然后变专量调用时原属%换成! 这样启用了“对变量动态捕获其扩展变化”

    1. @echo off
    2. setlocal enabledelayedexpansion
    3. set n=1
    4. for /f %%i in ('dir /b *.jpg') do (
    5. if !n! lss 10 (ren "%%i" "00000!n!.jpg") else (
    6. if !n! lss 100 (ren "%%i" "0000!n!.jpg") else (
    7. ren "%%i" "000!n!.jpg"))
    8. set /a n+=1)
    9. echo 批量重命名完成!
    10. pause

    批处理比较符

    1. 比较运算符一览:
    2. EQU - 等于
    3. NEQ - 不等于
    4. LSS - 小于
    5. LEQ - 小于或等于
    6. GTR - 大于
    7. GEQ - 大于或等于