Board logo

标题: [文本处理] 根据父文件夹名称对文件进行重命名的批处理 [打印本页]

作者: 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
如果不能获取第一级目录名就,获取上一级目录名吧!~~
  1. @echo off&Setlocal EnableDelayedExpansion
  2. for /r %%i in (.) do (
  3. set n=100
  4. for /f "delims=" %%a in (' dir /b "%%i\*.jpg"') do (
  5. set /a n+=1
  6. ren "%%i\%%a" "%%~ni"-(!n:~1!")"%%~xa
  7. )
  8. )
  9. 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去掉。
  1. @echo off
  2. cd /d j:\
  3. for /r %%i in (*) do (
  4.     for /f "delims=\" %%a in ("%%~pi") do echo ren %%~si "%%a%%~xi"
  5. )
  6. 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


    以后最好独立开贴
    获取目录名,给个例子:
  1. @echo off
  2. for %%a in (jpg ai eps rar) do (
  3.    for %%b in ('dir /s /a-d /b "J:\*.%%a"') do (
  4.       for %%c in ("%%~pb\.") do ren "%%b" "%%~nxc.jpg"
  5.    )
  6. )
  7. pause
复制代码

作者: bluck2008    时间: 2013-5-27 04:53

回复 9# CrLf

谢谢巡查高手大人的细心指导!有您真好~
下次会重开新帖再提问~




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