[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理如何实现文件夹拖动重命名?

谢谢6楼“pcl_test ”及7楼“cobat ”2位朋友的帮忙,“cobat ”朋友的重命名不是按照0001、0002、0003、0004这样的规律来命名的。“pcl_test ”的完美实现要求,但是稍稍有点遗憾的是,只能一次拖动一个文件夹,如果是拖动多个文件夹的话,只能处理第一个文件夹,还能帮我改改吗?非常谢谢了~!
拖动多个文件夹处理,要求每个文件夹都是从0001开始重命名!


下面的批处理代码是我复制论坛上某位大侠的作品(JPG格式图片添加随机4位不重复序号在原来文件名称上),放在需要处理文件的文件夹中双击执行就能处理,
我想改成把文件夹拖动(必须考虑同时拖动多个文件夹的情况)到批处理图标上(不是窗口)就能执行,该怎么改呢?我是菜鸟,麻烦大家把改好的完整的代码给我,如果让我改其中的哪部分,我怕还是我会弄不明白。
谢谢啊,别敲我,谁让我是菜鸟呢!
代码如下,请赐教!
  1. @echo off & setlocal enabledelayedexpansion
  2. if "%~1" neq "OK" (
  3.     set "n=10000"
  4.     for /f "tokens=2,3delims=|" %%a in ('"%~0" OK ^| sort') do (
  5.         set /a n+=1
  6.         ren "%%b" "!n:~1!_%%a"
  7.     )
  8.     pause & exit/b
  9. ) else (
  10.     for %%a in (*.jpg) do (
  11.         for /f "tokens=*delims=0123456789_" %%b in ("%%a") do (
  12.             echo,!random!^|%%b^|%%a
  13.         )
  14.     )
  15. )
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

顶上去,麻烦那位兄台帮帮忙!不胜感激!

TOP

谁能帮我解决下呢!:'(:'(

TOP

本帖最后由 cobat 于 2015-3-2 18:56 编辑

是不是这个意思?我也是菜鸟
  1. @echo off&setlocal enabledelayedexpansion 2>nul 3>nul
  2. for %%a in (%*) do (
  3.     set /a n=!random!%%10000+10000
  4.     pushd %%a && (popd & ren %%a "!n:~1!_%%~na")
  5. )
  6. pause
复制代码

TOP

回复 4# cobat


    你好,不是这个意思哦
我测试了下,你这个批处理是:拖动文件夹到批处理图标上,文件夹进行重命名。
我要达到的目的是:拖动文件夹到批处理图标上,该文件夹里的所有文件进行重命名。

能帮我改下吗?谢谢~

TOP

本帖最后由 pcl_test 于 2015-3-3 22:23 编辑

回复 1# 6232333
  1. @echo off & setlocal enabledelayedexpansion
  2. if not exist "%1\" (
  3. echo 错误:不支持拖曳文件进行重命名处理!
  4. ping 0 -n 2 >nul & exit
  5. )
  6. cd /d "%1\"
  7. for %%a in (*.jpg) do (
  8. for /f "tokens=* delims=0123456789_" %%b in ("%%a") do >>$ echo,!random!^|%%b^|%%a
  9. )
  10. set "n=10000"
  11. for /f "tokens=2,3 delims=|" %%a in ('sort $') do (
  12. set /a n+=1
  13. ren "%%b" "!n:~1!_%%a"
  14. )
  15. del $
  16. echo 重命名完成!
  17. pause
复制代码

TOP

本帖最后由 cobat 于 2015-3-15 00:14 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set n=10000
  4. (for %%a in (%*) do (
  5.     pushd "%%a"&&for /f "delims=" %%b in ('dir /a-d /b *.jpg') do (
  6.         set/a n+=1&ren "%%b" "!n:~1!_%%b"
  7.     )
  8. )) 2>nul
  9. pause
复制代码

TOP

回复 1# 6232333


    问题得到解答以后在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html

TOP

回复 8# pcl_test


您好,非常感谢您抽时间解答我的问题,谢谢您了。您的代码可以达到我的目的,但是稍稍有点小遗憾,就是每次只能拖动一个文件夹处理,多个的话也只能处理第一个,恳请您能再帮我改改吗? :loveliness:

TOP

我的是乱序,因为你说随机4位

TOP

本帖最后由 6232333 于 2015-3-15 00:09 编辑

回复 10# cobat


    那么晚了,没想到您也还在线啊?
能耽误点您的时间帮我改改吗?

按照0001、0002、0003这样的顺序命名
每次重命名,都保留最后一次的命名(把之前的重命名删除,但要保留文件的原始命名),因为有时候需要做几次的重命名操作!

TOP

本帖最后由 pcl_test 于 2015-3-15 00:09 编辑

回复 9# 6232333
已更正,支持多文件夹拖曳更名
  1. @echo off & setlocal enabledelayedexpansion
  2. for %%i in (%*) do (
  3. if not exist "%%i\" (
  4. echo 错误:不支持拖曳文件进行重命名处理!
  5. ping 0 -n 2 >nul & exit
  6. )
  7. cd /d "%%i\"
  8. for %%a in (*.jpg) do (
  9. for /f "tokens=* delims=0123456789_" %%b in ("%%a") do >>$ echo,!random!^|%%b^|%%a
  10. )
  11. set "n=10000"
  12. for /f "tokens=2,3 delims=|" %%a in ('sort $') do (
  13. set /a n+=1
  14. ren "%%b" "!n:~1!_%%a"
  15. )
  16. del $
  17. )
  18. echo 重命名完成!
  19. pause
复制代码
1

评分人数

TOP

本帖最后由 6232333 于 2015-3-15 00:15 编辑

回复 13# pcl_test


    谢谢您,这回完美解决问题,辛苦了,那么晚了还在帮助我,感谢感谢,太激动了~!

同时也感谢所有帮助我的人,感谢你们无私的帮助!在此一并谢过!

TOP

回复 14# 6232333
问题得到解决后请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html

TOP

返回列表