找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 31536|回复: 9

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

[复制链接]
发表于 2009-7-25 17:21:31 | 显示全部楼层 |阅读模式
比如:

我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 编辑 ]
发表于 2009-7-25 22:21:34 | 显示全部楼层

回复 1楼 的帖子

这个问题,跟你的这个问题http://bbs.bathome.net/thread-5328-1-1.html有点相似,你可以参照着,自己研究一下。
 楼主| 发表于 2009-7-26 19:52:01 | 显示全部楼层
我测试了,都不行,我做网站的,对DOS不是很懂
发表于 2009-7-26 20:39:24 | 显示全部楼层

回复 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 编辑 ]
发表于 2009-7-26 20:47:27 | 显示全部楼层

回复 1楼 的帖子

要注意,在同一个目录下,有相同格式的文件,名字一样的话,就不能成功。
例如
J:/一号文件/一号文件.jpg
J:/一号文件/一号文件.jpg
这两个  一号文件.jpg  是不可能同时存在一个目录下。
发表于 2009-7-26 22:49:24 | 显示全部楼层
  建议楼主不只是简单地给出修改前后的文件名列表对比,而是用文字描述表示出来;不要只在标题里提到你的意图,而是在正文部分用文字详细交代;不要给出代码,那些代码不一定正确,容易误导思路,甚至,过长的代码根本没人能耐心看完。以上为发帖求助的3大忌,请注意掌握求助技巧。
 楼主| 发表于 2009-7-27 03:22:40 | 显示全部楼层
谢谢两位的讲解。。。。我先试下
发表于 2013-5-26 06:51:26 | 显示全部楼层
本帖最后由 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

只获取当前的目录名!怎么改都改不出来???????麻烦高手了~谢谢
:'(
发表于 2013-5-26 16:58:37 | 显示全部楼层
本帖最后由 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
复制代码
发表于 2013-5-27 04:53:49 | 显示全部楼层
回复 9# CrLf

谢谢巡查高手大人的细心指导!有您真好~
下次会重开新帖再提问~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 07:16 , Processed in 0.020707 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表