标题: [文本处理] 根据父文件夹名称对文件进行重命名的批处理 [打印本页]
作者: dujianchi 时间: 2009-7-25 17:21 标题: 根据父文件夹名称对文件进行重命名的批处理
比如:
我J盘里有 多个文件夹
分别是
J:/一号文件/1.jpg
J:/一号文件/a1.ai
J:/一号文件/b1.psd
J:/一号文件/13.eps
J:/一号文件/1中国.jpg
J:/一号文件/bathome.jpg
J:/二号文件/2.ai
J:/三号文件/3.psd
J:/4号文件/3.eps
J:/5号文件夹/5.rar
J:/这个也要/二号文件/2.ai
J:/这个也要/三号文件/3.psd
J:/这个也要/4号文件/3.eps
J:/这个也要/5号文件夹/5.rar
J:/这个也要/还有子目录/文件夹/5.rar
最后为:
J:/一号文件/一号文件.jpg
J:/一号文件/一号文件.ai
J:/一号文件/一号文件.psd
J:/一号文件/一号文件.eps
J:/一号文件/一号文件.jpg
J:/一号文件/一号文件.jpg
J:/二号文件/二号文件.ai
J:/三号文件/三号文件.psd
J:/4号文件/4号文件.eps
J:/5号文件夹/5号文件夹.rar
J:/这个也要1/二号文件/这个也要1.ai
J:/这个也要2/三号文件/这个也要2.psd
J:/这个也要3/4号文件/这个也要3.eps
J:/这个也要4/5号文件夹/这个也要4.rar
J:/这个也要/还有子目录/文件夹/这个也要.rar
如果不能获取第一级目录名就,获取上一级目录名吧!~~- @echo off&Setlocal EnableDelayedExpansion
-
- for /r %%i in (.) do (
- set n=100
- for /f "delims=" %%a in (' dir /b "%%i\*.jpg"') do (
- set /a n+=1
- ren "%%i\%%a" "%%~ni"-(!n:~1!")"%%~xa
- )
- )
- pause
复制代码
这个是批量处理.jpg的文件命名N+1
[ 本帖最后由 dujianchi 于 2009-7-25 17:22 编辑 ]
作者: keen 时间: 2009-7-25 22:21 标题: 回复 1楼 的帖子
这个问题,跟你的这个问题http://bbs.bathome.net/thread-5328-1-1.html有点相似,你可以参照着,自己研究一下。
作者: dujianchi 时间: 2009-7-26 19:52
我测试了,都不行,我做网站的,对DOS不是很懂
作者: keen 时间: 2009-7-26 20:39 标题: 回复 3楼 的帖子
试一下,不要轻易使用,我在ren前面已经加了echo 。不会立即执行重命名。要确定后把ren前面的echo去掉。- @echo off
- cd /d j:\
- for /r %%i in (*) do (
- for /f "delims=\" %%a in ("%%~pi") do echo ren %%~si "%%a%%~xi"
- )
- pause
复制代码
[ 本帖最后由 keen 于 2009-7-26 20:45 编辑 ]
作者: keen 时间: 2009-7-26 20:47 标题: 回复 1楼 的帖子
要注意,在同一个目录下,有相同格式的文件,名字一样的话,就不能成功。
例如
J:/一号文件/一号文件.jpg
J:/一号文件/一号文件.jpg
这两个 一号文件.jpg 是不可能同时存在一个目录下。
作者: namejm 时间: 2009-7-26 22:49
建议楼主不只是简单地给出修改前后的文件名列表对比,而是用文字描述表示出来;不要只在标题里提到你的意图,而是在正文部分用文字详细交代;不要给出代码,那些代码不一定正确,容易误导思路,甚至,过长的代码根本没人能耐心看完。以上为发帖求助的3大忌,请注意掌握求助技巧。
作者: dujianchi 时间: 2009-7-27 03:22
谢谢两位的讲解。。。。我先试下
作者: bluck2008 时间: 2013-5-26 06:51
本帖最后由 bluck2008 于 2013-5-26 08:58 编辑
试一下,不要轻易使用,我在ren前面已经加了echo 。不会立即执行重命名。要确定后把ren前面的echo去掉。
[ ...
keen 发表于 2009-7-26 20:39
回复 4# keen
跟LZ有些雷同問題比如:
我J盘里有 多个文件夹
分别是
J:/一号文件/1.jpg
J:/一号文件/a1.ai
J:/一号文件/b1.psd
J:/一号文件/13.eps
J:/一号文件/1中国.jpg
J:/一号文件/bathome.jpg
J:/二号文件/2.ai
J:/三号文件/3.psd
J:/4号文件/3.eps
J:/5号文件夹/5.rar
J:/这个也要/二号文件/2.ai
J:/这个也要/三号文件/3.psd
J:/这个也要/4号文件/3.eps
J:/这个也要/5号文件夹/5.rar
J:/这个也要/还有子目录/文件夹/5.rar
最后为:
J:/一号文件/一号文件.jpg
J:/一号文件/一号文件.ai
J:/一号文件/一号文件.psd
J:/一号文件/一号文件.eps
J:/一号文件/一号文件.jpg
J:/一号文件/一号文件.jpg
J:/二号文件/二号文件.ai
J:/三号文件/三号文件.psd
J:/4号文件/4号文件.eps
J:/5号文件夹/5号文件夹.rar
J:/这个也要1/二号文件/二号文件.ai
J:/这个也要2/三号文件/三号文件.psd
J:/这个也要3/4号文件/4号文件.eps
J:/这个也要4/5号文件夹/5号文件.rar
只获取当前的目录名!怎么改都改不出来???????麻烦高手了~谢谢 :'(
作者: CrLf 时间: 2013-5-26 16:58
本帖最后由 CrLf 于 2013-5-26 17:00 编辑
回复 8# bluck2008
以后最好独立开贴
获取目录名,给个例子:- @echo off
- for %%a in (jpg ai eps rar) do (
- for %%b in ('dir /s /a-d /b "J:\*.%%a"') do (
- for %%c in ("%%~pb\.") do ren "%%b" "%%~nxc.jpg"
- )
- )
- pause
复制代码
作者: bluck2008 时间: 2013-5-27 04:53
回复 9# CrLf
谢谢巡查高手大人的细心指导!有您真好~
下次会重开新帖再提问~
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |