标题: [文件操作] [已解决]批处理如何实现文件夹拖动重命名? [打印本页]
作者: 6232333 时间: 2015-2-14 11:07 标题: [已解决]批处理如何实现文件夹拖动重命名?
谢谢6楼“pcl_test ”及7楼“cobat ”2位朋友的帮忙,“cobat ”朋友的重命名不是按照0001、0002、0003、0004这样的规律来命名的。“pcl_test ”的完美实现要求,但是稍稍有点遗憾的是,只能一次拖动一个文件夹,如果是拖动多个文件夹的话,只能处理第一个文件夹,还能帮我改改吗?非常谢谢了~!
拖动多个文件夹处理,要求每个文件夹都是从0001开始重命名!
下面的批处理代码是我复制论坛上某位大侠的作品(JPG格式图片添加随机4位不重复序号在原来文件名称上),放在需要处理文件的文件夹中双击执行就能处理,
我想改成把文件夹拖动(必须考虑同时拖动多个文件夹的情况)到批处理图标上(不是窗口)就能执行,该怎么改呢?我是菜鸟,麻烦大家把改好的完整的代码给我,如果让我改其中的哪部分,我怕还是我会弄不明白。
谢谢啊,别敲我,谁让我是菜鸟呢!
代码如下,请赐教!- @echo off & setlocal enabledelayedexpansion
- if "%~1" neq "OK" (
- set "n=10000"
- for /f "tokens=2,3delims=|" %%a in ('"%~0" OK ^| sort') do (
- set /a n+=1
- ren "%%b" "!n:~1!_%%a"
- )
- pause & exit/b
- ) else (
- for %%a in (*.jpg) do (
- for /f "tokens=*delims=0123456789_" %%b in ("%%a") do (
- echo,!random!^|%%b^|%%a
- )
- )
- )
复制代码
作者: 6232333 时间: 2015-2-16 11:05
顶上去,麻烦那位兄台帮帮忙!不胜感激!
作者: 6232333 时间: 2015-3-2 17:23
谁能帮我解决下呢!:'(:'(
作者: cobat 时间: 2015-3-2 17:48
本帖最后由 cobat 于 2015-3-2 18:56 编辑
是不是这个意思?我也是菜鸟- @echo off&setlocal enabledelayedexpansion 2>nul 3>nul
- for %%a in (%*) do (
- set /a n=!random!%%10000+10000
- pushd %%a && (popd & ren %%a "!n:~1!_%%~na")
- )
- pause
复制代码
作者: 6232333 时间: 2015-3-3 14:30
回复 4# cobat
你好,不是这个意思哦
我测试了下,你这个批处理是:拖动文件夹到批处理图标上,文件夹进行重命名。
我要达到的目的是:拖动文件夹到批处理图标上,该文件夹里的所有文件进行重命名。
能帮我改下吗?谢谢~
作者: pcl_test 时间: 2015-3-3 15:14
本帖最后由 pcl_test 于 2015-3-3 22:23 编辑
回复 1# 6232333 - @echo off & setlocal enabledelayedexpansion
- if not exist "%1\" (
- echo 错误:不支持拖曳文件进行重命名处理!
- ping 0 -n 2 >nul & exit
- )
- cd /d "%1\"
- for %%a in (*.jpg) do (
- for /f "tokens=* delims=0123456789_" %%b in ("%%a") do >>$ echo,!random!^|%%b^|%%a
- )
- set "n=10000"
- for /f "tokens=2,3 delims=|" %%a in ('sort $') do (
- set /a n+=1
- ren "%%b" "!n:~1!_%%a"
- )
- del $
- echo 重命名完成!
- pause
复制代码
作者: cobat 时间: 2015-3-3 22:08
本帖最后由 cobat 于 2015-3-15 00:14 编辑
- @echo off
- setlocal enabledelayedexpansion
- set n=10000
- (for %%a in (%*) do (
- pushd "%%a"&&for /f "delims=" %%b in ('dir /a-d /b *.jpg') do (
- set/a n+=1&ren "%%b" "!n:~1!_%%b"
- )
- )) 2>nul
- pause
复制代码
作者: pcl_test 时间: 2015-3-13 07:30
回复 1# 6232333
问题得到解答以后在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html
作者: 6232333 时间: 2015-3-14 23:54
回复 8# pcl_test
您好,非常感谢您抽时间解答我的问题,谢谢您了。您的代码可以达到我的目的,但是稍稍有点小遗憾,就是每次只能拖动一个文件夹处理,多个的话也只能处理第一个,恳请您能再帮我改改吗? :loveliness:
作者: cobat 时间: 2015-3-15 00:01
我的是乱序,因为你说随机4位
作者: 6232333 时间: 2015-3-15 00:06
本帖最后由 6232333 于 2015-3-15 00:09 编辑
回复 10# cobat
那么晚了,没想到您也还在线啊?
能耽误点您的时间帮我改改吗?
按照0001、0002、0003这样的顺序命名
每次重命名,都保留最后一次的命名(把之前的重命名删除,但要保留文件的原始命名),因为有时候需要做几次的重命名操作!
作者: pcl_test 时间: 2015-3-15 00:08
本帖最后由 pcl_test 于 2015-3-15 00:09 编辑
回复 9# 6232333
已更正,支持多文件夹拖曳更名- @echo off & setlocal enabledelayedexpansion
- for %%i in (%*) do (
- if not exist "%%i\" (
- echo 错误:不支持拖曳文件进行重命名处理!
- ping 0 -n 2 >nul & exit
- )
- cd /d "%%i\"
- for %%a in (*.jpg) do (
- for /f "tokens=* delims=0123456789_" %%b in ("%%a") do >>$ echo,!random!^|%%b^|%%a
- )
- set "n=10000"
- for /f "tokens=2,3 delims=|" %%a in ('sort $') do (
- set /a n+=1
- ren "%%b" "!n:~1!_%%a"
- )
- del $
- )
- echo 重命名完成!
- pause
复制代码
作者: 6232333 时间: 2015-3-15 00:12
本帖最后由 6232333 于 2015-3-15 00:15 编辑
回复 13# pcl_test
谢谢您,这回完美解决问题,辛苦了,那么晚了还在帮助我,感谢感谢,太激动了~!
同时也感谢所有帮助我的人,感谢你们无私的帮助!在此一并谢过!
作者: pcl_test 时间: 2015-3-15 00:15
回复 14# 6232333
问题得到解决后请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |