中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 重命名 以文件夹的名字 上一主题 | 下一主题
createfree
新手上路





积分 16
发帖 15
注册 2007-6-20
状态 离线
『楼 主』:  重命名 以文件夹的名字

搜索无果,特求
文件夹a下有很多文件夹b,c.......,b,c....文件夹下各有多个文件excel文件。
要求:将这些文件改名为其 文件夹名n.xls
效果如:b1.xls;b2.xls;b3.xls....;c1.xls;c2.xls;c3.xls....
同时,将这些文件复制到a文件夹下

[ Last edited by createfree on 2010-9-11 at 16:29 ]

2010-9-11 16:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
coldface
初级用户





积分 71
发帖 70
注册 2010-7-19
状态 离线
『第 2 楼』:  

关于改名的应该是这样
@echo off

  setlocal EnableDelayedExpansion

  for /f "delims=" %%a in ('dir/b/ad d:\B') do (

  set a=1

  for /f "delims=" %%i in ('dir/b/a-d "%%~na\*.*"') do (

  ren "%%~na\%%~nxi" "%%~na!a!%%~xi"

  set /a a+=1

  ))

附赠个解释:
%~na        - expands %I to a file name only
%~xa       - expands %I to a file extension only

[ Last edited by coldface on 2010-9-11 at 17:45 ]

2010-9-11 17:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
createfree
新手上路





积分 16
发帖 15
注册 2007-6-20
状态 离线
『第 3 楼』:  

没有作用

2010-9-11 19:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
coldface
初级用户





积分 71
发帖 70
注册 2010-7-19
状态 离线
『第 4 楼』:  

哦 好像是有点问题。
我修改下

[ Last edited by coldface on 2010-9-11 at 20:52 ]

2010-9-11 20:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
createfree
新手上路





积分 16
发帖 15
注册 2007-6-20
状态 离线
『第 5 楼』:  

修改后的答案呢

2010-9-11 23:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bozhou
初级用户





积分 38
发帖 19
注册 2007-4-25
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by createfree at 2010-9-11 04:26 PM:
搜索无果,特求
文件夹a下有很多文件夹b,c.......,b,c....文件夹下各有多个文件excel文件。
要求:将这些文件改名为其 文件夹名n.xls
效果如:b1.xls; ...


@echo off & setlocal enabledelayedexpansion & title By Bozhou & color 0a

:请先设置目录
set p1=%cd%
cd /d "%p1%"

:获取目录以及文件并重命名文件
for /f "delims=*" %%a in ('dir /ad /b') do (
        cd "%%a"
        set n=0
        for /f "delims=*" %%b in ('dir /b /on *.xls') do (
        set /a n=n+1
        if !n! lss 10 (ren "%%b" "%%a"0!n!.xls) else (ren "%%b" "%%a"!n!.xls)
        )
:移动文件
    move *.xls ..\
    cd..
:删除空文件夹
:若需要请将下行冒号去掉
    :rd /s /q "%%a"
    echo>nul
)
pause
WinXPSP2下多次测试通过。不知满足要求否?

[ Last edited by bozhou on 2010-9-12 at 01:22 ]

2010-9-12 01:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
createfree
新手上路





积分 16
发帖 15
注册 2007-6-20
状态 离线
『第 7 楼』:  

你们测试了的 我拿过来咋就用不起呢 没反应
感谢bozhou深夜回复  致敬

[ Last edited by createfree on 2010-9-12 at 09:46 ]

2010-9-12 09:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
createfree
新手上路





积分 16
发帖 15
注册 2007-6-20
状态 离线
『第 8 楼』:  

敬请回复

2010-9-12 11:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
coldface
初级用户





积分 71
发帖 70
注册 2010-7-19
状态 离线
『第 9 楼』:  

下面这个我测试着可以:
@echo off
d:
cd d:\Afolder

  setlocal EnableDelayedExpansion

  for /f "delims=" %%a in ('dir/b/ad d:\Afolder') do (

  set a=1

  for /f "delims=" %%i in ('dir/b/a-d "%%~na\*.*"') do (

  ren "%%~na\%%~nxi" "%%~na!a!%%~xi"

  set /a a+=1

 

)

move /y d:\Afolder\%%~na\*.*  d:\Afolder

)

测试的时候把D盘以及d:\Afolder替换成A文件夹所在的盘符和目录

2010-9-12 15:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
createfree
新手上路





积分 16
发帖 15
注册 2007-6-20
状态 离线
『第 10 楼』:  

终于发现了问题
我的文件夹是以这样一种方式命名的:
1.a   2.b  
要将 数字. 去掉才行

2010-9-12 16:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bozhou
初级用户





积分 38
发帖 19
注册 2007-4-25
状态 离线
『第 11 楼』:  



  Quote:
Originally posted by createfree at 2010-9-12 04:38 PM:
终于发现了问题
我的文件夹是以这样一种方式命名的:
1.a   2.b  
要将 数字. 去掉才行

测试依然通过啊。不过得出的结果是1.a01.xls、1.a02.xls、2.b01.xls、2.b02.xls而已。
是符合你的题目要求的啊。文件夹名+序号.扩展名。

P.S.昨晚是因为今天考试睡不着而已。

如果是不想要文件夹名的“数字加点号”先重命名文件夹即可。也是批处理。

[ Last edited by bozhou on 2010-9-12 at 21:54 ]

2010-9-12 21:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bozhou
初级用户





积分 38
发帖 19
注册 2007-4-25
状态 离线
『第 12 楼』:  



  Quote:
Originally posted by createfree at 2010-9-12 04:38 PM:
终于发现了问题
我的文件夹是以这样一种方式命名的:
1.a   2.b  
要将 数字. 去掉才行

按新条件修改如下,已测试通过:
@echo off & setlocal enabledelayedexpansion & title By Bozhou & color 0a

:请先设置目录,并确保将要被操作的文件以及文件夹没被运行占用
set p1=%cd%
cd /d "%p1%"

:获取目录并更改目录名(将文件夹名1.a改成a)
for /f "tokens=1,2 delims=." %%i in ('dir /ad /b') do ren "%%i"."%%j" "%%j"

:获取目录以及文件并重命名文件
for /f "delims=*" %%a in ('dir /ad /b') do (
        cd "%%a"
        set n=0
        for /f "delims=*" %%b in ('dir /b /on *.xls') do (
        set /a n=n+1
        if !n! lss 10 (ren "%%b" "%%a"0!n!.xls) else (ren "%%b" "%%a"!n!.xls)
        )
:移动文件
    move *.xls ..\
    cd..
:删除空文件夹
:若需要请将下行冒号去掉
    :rd /s /q "%%a"
    echo>nul
)
echo 操作完成!
pause
[ Last edited by bozhou on 2010-9-12 at 22:14 ]

2010-9-12 22:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: