找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 43658|回复: 16

求一个批处理脚本重命名拖拽图片

  [复制链接]
发表于 2020-3-21 17:35:23 | 显示全部楼层 |阅读模式
本帖最后由 gytqqq 于 2020-3-21 20:58 编辑

A为一个空文件夹
我从其他文件夹拖拽图片到A文件夹,使图片命名为0001,再拖拽一张图片命名为0002,以此类推。谢谢给位大佬。麻烦支持的图片格式尽量全一些。

其他文件夹与A文件夹不在同一个盘符,拖拽即复制。

20元酬谢,如果实现起来略复杂可酌情加钱。

win10系统环境

非常感谢wujunkai和Gin_Q二位的帮忙
我会为两位都转账的 谢谢
发表于 2020-3-21 18:16:37 | 显示全部楼层
本帖最后由 Gin_Q 于 2020-3-22 08:53 编辑
  1. @echo off& setlocal enabledelayedexpansion &rem by Gin
  2. ::可以检查是否拖入了上一次文件(间隔超过一次无法检测)
  3. ::如果中间删掉了一个文件可以自动补充(需要重新打开程序)
  4. ::需要把程序放在修改后的图片文件目录
  5. ::增加图片格式为原有格式(任意格式文件都可以)
  6. ::REV 01

  7. ::检查文件名
  8. for /l %%a in (1,1,9999) do (
  9.         if %%a lss 10 ( for /f %%b in ('attrib -i "000%%a*"') do (
  10.                 if "%%b" equ "找不到文件" ( echo 正在处理第%%a个文件
  11.                 call :input
  12.                 copy !file! "000%%a!suffix!")))
  13.         if %%a geq 10 ( if %%a lss 100 (for /f %%b in ('attrib -i "00%%a*"') do (
  14.                 if "%%b" equ "找不到文件" ( echo 正在处理第%%a个文件
  15.                 call :input
  16.                 copy !file! "00%%a!suffix!"))))
  17.         if %%a geq 100 ( if %%a lss 1000 (for /f %%b in ('attrib -i "0%%a*"') do (
  18.                 if "%%b" equ "找不到文件" ( echo 正在处理第%%a个文件
  19.                 call :input
  20.                 copy !file! "0%%a!suffix!"))))
  21.         if %%a geq 1000 ( for /f %%b in ('attrib -i "%%a*"') do (
  22.                 if "%%b" equ "找不到文件" ( echo 正在处理第%%a个文件
  23.                 call :input
  24.                 copy !file! "%%a!suffix!")))
  25.         )
  26. echo 文件数已到达9999!
  27. pause&exit
  28. :input
  29.         set /p file=请拖入文件:
  30.         if "!file!" equ "!che!" goto :input
  31.         for /f "tokens=*" %%a in ("!file!") do set "suffix=%%~xa"
  32.         set "che=!file!"
  33. exit /b 0
复制代码
发表于 2020-3-21 18:20:44 | 显示全部楼层
  1. @echo off
  2. @setlocal enabledelayedexpansion

  3. set num=1
  4. set name=0001
  5. call:count

  6. :main
  7.     for /R %%i in (*.jpg,*.jpeg,*.png,*gif,*.bmp,*.ico,*.dib,*.jpe) do (
  8.         if not %%~ni LSS %num% (
  9.             rem echo rename "%%i" %name%.%%~xi ----  %num%
  10.             rename "%%i" %name%.%%~xi
  11.             set /A num=num+1
  12.             call:int
  13.             goto:main
  14.         )
  15.     )
  16.     call:sleep 125
  17. goto:main

  18. :count
  19.     rem 计算已重命名的文件数
  20.     if exist %num%.jpg (
  21.         set /A num=num+1
  22.         call:int
  23.         goto:count
  24.     )
  25. goto:eof

  26. :int
  27.     rem 统一格式
  28.     set name=00000%num%
  29.     set name=%name:~-4%
  30. goto:eof

  31. :sleep
  32.     rem 防高频
  33.     echo WScript.sleep %1 > sleep.vbs
  34.     start /wait sleep.vbs
  35.     del sleep.vbs
  36. goto:eof
复制代码
支持几乎所有图片后缀名。
支持9999以内。
错了再通知我,我只测试到23.
发表于 2020-3-21 19:14:32 | 显示全部楼层
  1. <# :
  2. cls
  3. @echo off
  4. rem 有问题,可加QQ956535081及时沟通
  5. cd /d "%~dp0"
  6. powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default)))"
  7. pause
  8. exit
  9. #>
  10. $folder='.';
  11. $dic=New-Object 'System.Collections.Generic.Dictionary[string,int]';
  12. for($i=100001;$i -le 199999;$i++){
  13.     $n=$i.toString().Substring(1);
  14.     $dic.Add($n,0);
  15. };
  16. $files=@(dir -liter $folder|?{('.bat' -ne $_.Extension) -and ($_ -is [System.IO.FileInfo])});
  17. for($i=0;$i -lt $files.length;$i++){
  18.     $base=$files[$i].BaseName;
  19.     if(-not $dic.ContainsKey($base)){
  20.         foreach($it in $dic.Keys){
  21.             if($dic[$it] -eq 0){
  22.                 $newname=$it+$files[$i].Extension;
  23.                 write-host ($files[$i].Name+' --> '+$newname);
  24.                 mv -liter $files[$i].FullName ($files[$i].Directory.FullName+'\'+$newname);
  25.                 $dic[$it]++;break;
  26.             };
  27.         };
  28.     }else{$dic[$base]++};
  29. }
复制代码
 楼主| 发表于 2020-3-21 19:43:11 | 显示全部楼层
回复 3# wujunkai


    生成的文件都带点。。。比如0001. 0002. 0003. 能不能把点去掉
 楼主| 发表于 2020-3-21 19:45:59 | 显示全部楼层
回复 2# Gin_Q


    乱码 看不懂啊
发表于 2020-3-21 19:56:49 | 显示全部楼层
回复 6# gytqqq


    把脚本另存为ANSI格式
发表于 2020-3-21 20:42:01 | 显示全部楼层
回复 5# gytqqq


    抱歉,在细节的处理上有点问题,已改正。
  1. @echo off
  2. @setlocal enabledelayedexpansion

  3. set num=1
  4. set name=0001
  5. call:count

  6. :main
  7.     for /R %%i in (*.jpg,*.jpeg,*.png,*gif,*.bmp,*.ico,*.dib,*.jpe) do (
  8.         if not %%~ni LSS %num% (
  9.             rem echo rename "%%i" %name%%%~xi ----  %num%
  10.             rename "%%i" %name%%%~xi
  11.             set /A num=num+1
  12.             call:int
  13.             goto:main
  14.         )
  15.     )
  16.     call:sleep 125
  17. goto:main

  18. :count
  19.     rem 计算已重命名的文件数
  20.     if exist %num%.jpg (
  21.         set /A num=num+1
  22.         call:int
  23.         goto:count
  24.     )
  25. goto:eof

  26. :int
  27.     rem 统一格式
  28.     set name=00000%num%
  29.     set name=%name:~-4%
  30. goto:eof

  31. :sleep
  32.     rem 防高频
  33.     echo WScript.sleep %1 > sleep.vbs
  34.     start /wait sleep.vbs
  35.     del sleep.vbs
  36. goto:eof
复制代码
觉得满意的话请付款[滑稽]
 楼主| 发表于 2020-3-21 20:51:30 | 显示全部楼层
回复 8# wujunkai


    谢谢 暂时测试没有问题 我给您转账 支付宝账号给我
 楼主| 发表于 2020-3-21 20:51:57 | 显示全部楼层
回复 7# Gin_Q


    谢谢 暂时测试没有问题 我给您转账 支付宝账号给我
发表于 2020-3-21 20:58:45 | 显示全部楼层
回复 9# gytqqq


    没有支付宝。。。微信可?18906991102
发表于 2020-3-21 21:48:17 | 显示全部楼层
1358491044@qq.com
发表于 2020-3-22 08:54:44 | 显示全部楼层
回复 10# gytqqq


    二楼我已经更新了程序,支持任意格式文件!
 楼主| 发表于 2020-3-23 15:10:11 | 显示全部楼层
回复 12# Gin_Q


    您好 能不能拖拽完文件不用回车啊 直接更名 文件多了有点吃不消了。。。。
发表于 2020-3-23 16:43:02 | 显示全部楼层
回复 14# gytqqq


    你不转账就算了,何必说有偿求助呢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 04:11 , Processed in 0.022260 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表