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

[文本处理] 根据父文件夹名称对文件进行重命名的批处理

比如:

我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 编辑 ]

回复 9# CrLf

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

TOP

本帖最后由 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
复制代码

TOP

本帖最后由 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

只获取当前的目录名!怎么改都改不出来???????麻烦高手了~谢谢
:'(

TOP

谢谢两位的讲解。。。。我先试下

TOP

  建议楼主不只是简单地给出修改前后的文件名列表对比,而是用文字描述表示出来;不要只在标题里提到你的意图,而是在正文部分用文字详细交代;不要给出代码,那些代码不一定正确,容易误导思路,甚至,过长的代码根本没人能耐心看完。以上为发帖求助的3大忌,请注意掌握求助技巧。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

回复 1楼 的帖子

要注意,在同一个目录下,有相同格式的文件,名字一样的话,就不能成功。
例如
J:/一号文件/一号文件.jpg
J:/一号文件/一号文件.jpg
这两个  一号文件.jpg  是不可能同时存在一个目录下。
(*^_^*)

TOP

回复 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 编辑 ]
(*^_^*)

TOP

我测试了,都不行,我做网站的,对DOS不是很懂

TOP

回复 1楼 的帖子

这个问题,跟你的这个问题http://bbs.bathome.net/thread-5328-1-1.html有点相似,你可以参照着,自己研究一下。
(*^_^*)

TOP

返回列表