Board logo

标题: [文件操作] 求一个批处理脚本重命名拖拽图片 [打印本页]

作者: gytqqq    时间: 2020-3-21 14:16     标题: 求一个批处理脚本重命名拖拽图片

A为一个空文件夹
我从其他文件夹拖拽图片到A文件夹,使图片命名为001,再拖拽一张图片命名为002,以此类推。谢谢给位大佬。
作者: wujunkai    时间: 2020-3-21 15:27

回复 1# gytqqq


    图片格式是什么,有固定的后缀名吗?
    你什么都不说清楚让人很难搞
作者: gytqqq    时间: 2020-3-21 15:30

回复  gytqqq


    图片格式是什么,有固定的后缀名吗?
    你什么都不说清楚让人很难搞
wujunkai 发表于 2020-3-21 15:27



    jpg的就是001 002 003 004 005------100 就这么排列啊
作者: wujunkai    时间: 2020-3-21 15:54

回复 3# gytqqq
  1. @echo off
  2. @setlocal enabledelayedexpansion
  3. set num=001
  4. call:count
  5. :main
  6.     for /R %%i in (*.jpg) do (
  7.         if not %%~ni LSS %num% (
  8.             rename "%%i" %num%.jpg
  9.             set /A num+=1
  10.             call:int
  11.             goto:main
  12.         )
  13.     )
  14.     call:sleep 125
  15. goto:main
  16. :count
  17.     rem 计算已重命名的文件数
  18.     if exist %num%.jpg (
  19.         set /A num+=1
  20.         call:int
  21.         goto:eof
  22.     )
  23. goto:eof
  24. :int
  25.     rem 统一格式
  26.     set num=000%num%
  27.     set num=%num:~-3%
  28. goto:eof
  29. :sleep
  30.     rem 防高频
  31.     echo WScript.sleep %1 > sleep.vbs
  32.     start /wait sleep.vbs
  33.     del sleep.vbs
  34. goto:eof
复制代码
目测稳定。8Hz。放在A文件夹的目录下,打开后保持运行(其实全部复制好再运行也可以)。仅支持jpg且文件数小于999.
    建议先备份图片再尝试,出现意外概不负责。
作者: gytqqq    时间: 2020-3-21 16:07

回复  gytqqq 目测稳定。8Hz。放在A文件夹的目录下,打开后保持运行(其实全部复制好再运行也可以)。仅支持 ...
wujunkai 发表于 2020-3-21 15:54



    有效!!文件数能不能小于9999 谢谢了 给您磕头了
作者: gytqqq    时间: 2020-3-21 16:10

回复  gytqqq 目测稳定。8Hz。放在A文件夹的目录下,打开后保持运行(其实全部复制好再运行也可以)。仅支持 ...
wujunkai 发表于 2020-3-21 15:54



    改到008后 再拖文件就不改了。。。
作者: gytqqq    时间: 2020-3-21 16:15

回复 4# wujunkai


    我发现生成那个sleep文件消失就不再改名了
作者: wujunkai    时间: 2020-3-21 16:47

回复 7# gytqqq


    抱歉,我也不知道为什么。。。
    明天我再追踪一下过程。学生党要去写作业了 (^_^)
作者: Batcher    时间: 2020-3-21 17:49

回复 4# wujunkai


    猜测是0开头的数字被识别是八进制了
作者: Gin_Q    时间: 2020-3-21 18:03

本帖最后由 Gin_Q 于 2020-3-21 18:13 编辑
  1. @echo off& setlocal enabledelayedexpansion &rem by Gin
  2. ::可以检查是否拖入了上一次文件(间隔超过一次无法检测)
  3. ::如果中间删掉了一个文件可以自动补充(需要重新打开程序)
  4. ::需要把程序放在修改后的图片文件目录
  5. ::检查文件名
  6. for /l %%a in (1,1,999) do (
  7. if %%a lss 10 ( if not exist "00%%a.jpg" ( echo 正在处理第%%a个文件
  8. call :input
  9. copy "!file!" "00%%a.jpg"))
  10. if %%a geq 10 ( if %%a lss 100 (if not exist "0%%a.jpg" ( echo 正在处理第%%a个文件
  11. call :input
  12. copy "!file!" "0%%a.jpg")))
  13. if %%a geq 100 ( if not exist "%%a.jpg" ( echo 正在处理第%%a个文件
  14. call :input
  15. copy "!file!" "%%a.jpg"))
  16. )
  17. echo 文件数已到达999!
  18. pause&exit
  19. :input
  20. set /p file=请拖入文件:
  21. if "!file!" equ "!che!" goto :input
  22. set "che=!file!"
  23. exit /b 0
复制代码

作者: wujunkai    时间: 2020-3-21 18:18

回复 9# Batcher


    确实。。。稍微修一下又可以用了。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2