Board logo

标题: 这种改名要求能否实现:根据父文件夹重命名文件 [打印本页]

作者: 666cool     时间: 2008-10-6 15:33    标题: 这种改名要求能否实现:根据父文件夹重命名文件


比如我有一个文件夹名字为 资料,
里面又有其他的文件夹,比如说有  英语资料,数学资料,语文资料 三个文件夹;
而每个文件夹里又有很多文档、图片之类的文件。

能否实现批量 英语资料文件夹里所有文件名以英语资料开头, 语文资料文件夹里所有文件名以语文资料开头,数学资料文件夹里所有文件以数学资料开头 。

───────────────── 版务记录 ─────────────────
执行:HAT
操作:2008-10-07在帖子标题中增加搜索关键字
说明:原标题"如果是这种批处理改名要求批处理能否实现"不利于论坛搜索
处罚:扣除2点积分
提示:建议阅读以下帖子
{1415}提问的智慧
{7326}论坛新手必读,所有人的基本行为准则
{22703}请不要做浮躁的人
{32667}[愤怒]那些连标题都写不清楚的人们啊,你们醒醒吧
{32825}本版严厉整顿烂帖
───────────────── 版务记录 ─────────────────


[ Last edited by HAT on 2008-10-7 at 01:49 ]
作者: tireless     时间: 2008-10-6 16:16

@echo off
set folder=G:\test\资料
for %%a in (英语资料 数学资料 语文资料) do (
     for /f "delims=" %%b in ('dir /b "%folder%\%%a"') do (
           ren "%folder%\%%a\%%b" "%%a%%b"
     )
)

作者: 516526966     时间: 2008-10-6 16:34
高手就是不一样啊。
作者: 666cool     时间: 2008-10-6 22:51    标题: 回2楼

先赞一个啊

如果是不仅要把里面的文件以文件夹的名字做开头,而且还能自动排序呢?
比如数学资料文件夹里所有文件以数学资料开头  并且
为 数学资料1 ,数学资料2 ,数学资料3  依次类推 把原有的文件名称都这样替换掉,命令如何写?
作者: lxmxn     时间: 2008-10-7 10:37


  Quote:
Originally posted by 666cool at 2008-10-6 22:51:
先赞一个啊

如果是不仅要把里面的文件以文件夹的名字做开头,而且还能自动排序呢?
比如数学资料文件夹里所有文件以数学资料开头  并且
为  ...

添加一个计数器变量即可实现,演示代码如下,未测试,有问题欢迎跟帖讨论。
@echo off & SetLocal EnableDelayedExpansion
set folder=G:\test\资料

:: 添加index变量为计数器用
set index=1

for %%a in (英语资料 数学资料 语文资料) do (
     for /f "delims=" %%b in ('dir /b "%folder%\%%a"') do (
           ren "%folder%\%%a\%%b" "%%a!index!"
           set /a index+=1
     )
     rem 还原index的值:
     set index=1
)

作者: xinhepc     时间: 2008-10-7 13:16
写得好呀,高手就是不一样.呵呵
作者: 666cool     时间: 2008-10-7 15:53    标题: 遵循HAT大人的意见,我下次写标题一定注意 -_-!

我知错 O(∩_∩)O~
作者: 666cool     时间: 2008-10-8 00:02    标题: 回五楼

用你贴出的语句执行后,文件名替换OK, 但是都没了扩展名,导致图片无法打开,这个,是? 什么原因?
作者: HAT     时间: 2008-10-8 01:05    标题: Re 8楼

ren "%folder%\%%a\%%b" "%%a!index!"
改名的代码就一句而已,自己先尝试一下修改!index!的位置吧。
作者: 666cool     时间: 2008-10-8 04:26    标题: re 9楼

HAT大人,刚才我想了想,发觉应该是这里出的问题 dir /b
dir命令列出的文件是加了后缀名的,而这样就导致改名的时候把后缀也当成文件名抹去了,dos命令里有能列出文件名但是不显示后缀名的命令吗?
作者: HAT     时间: 2008-10-8 04:51    标题: Re 10楼


@echo off & SetLocal EnableDelayedExpansion
set folder=G:\test\资料

:: 添加index变量为计数器用
set index=1

for %%a in (英语资料 数学资料 语文资料) do (
     for /f "delims=" %%b in ('dir /b "%folder%\%%a"') do (
           ren "%folder%\%%a\%%b" "%%a!index!%%b"
           set /a index+=1
     )
     rem 还原index的值:
     set index=1
)

作者: pkto     时间: 2009-5-23 05:12
HAT就是强大啊!许久了回来看看这段代码,仍然是如此的经典,基本功扎实得都板板的了!
作者: su2353     时间: 2010-4-15 20:12
如果文件夹不只(英语资料 数学资料 语文资料)这4个,而是任意多个文件夹,这时应该怎么办?