中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 重命名文件为上级目录名并按规律添加序号
作者:
标题: 重命名文件为上级目录名并按规律添加序号 取消高亮 | 上一主题 | 下一主题
chenwc520
新手上路





积分 14
发帖 9
注册 2007-6-17
状态 离线
『楼 主』:  重命名文件为上级目录名并按规律添加序号

重命名 当前目录下所有 指定的扩展名文件 为上级目录名,两个文件以上自动添加序号.

如:E:\Tencent下有以下文件
E:\Tencent\qq\w.exe
E:\Tencent\qq\e.exe

用脚本自动重命名为
E:\Tencent\qq\qqa.exe
E:\Tencent\qq\qqb.exe

E:\Tencent\qq\qq1.exe
E:\Tencent\qq\qq2.exe

如果指定的扩展名只有一个文件,直接改为上级目录名相同

[ Last edited by bjsh on 2007-7-31 at 12:57 PM ]

2007-6-17 21:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  

Try this
@echo off&Setlocal EnableDelayedExpansion

set /p file_type=输入文件的扩展名,格式为[.ext]:
if not defined file_type exit

for /f "delims=" %%a in ("%cd%") do set new_name=%%~na

for /f "delims=" %%a in ('dir /b *%file_type%') do (
        set /a num+=1
        ren "%%a" "%new_name%!num!%file_type%"
)

if %num% equ 1 ren "%new_name%1%file_type%" "%new_name%%file_type%"

pause&exit/b


   此帖被 +1 点积分    点击查看详情   
评分人:【 chenwc520 分数: +1  时间:2007-6-22 15:30


2007-6-18 04:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chenwc520
新手上路





积分 14
发帖 9
注册 2007-6-17
状态 离线
『第 3 楼』:  谢谢版主

测试有效,我开始没说清楚,如果做成是包括子文件夹呢,应该怎么写?而且文件排序是根据什么排?
文件名也是改成它上一级目录名

[ Last edited by chenwc520 on 2007-6-18 at 02:10 PM ]

2007-6-18 14:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chenwc520
新手上路





积分 14
发帖 9
注册 2007-6-17
状态 离线
『第 4 楼』:  再问

是不是改"dir /b" 为"dir /o:n" 就是按名称(字母顺序)排序???

2007-6-18 14:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jubailan
新手上路





积分 14
发帖 6
注册 2007-6-18
状态 离线
『第 5 楼』:  

@echo off
setlocal enabledelayedexpansion
cls
if exist my.txt del my.txt /q
if exist kong.txt del kong.txt /q
::目标文件夹路径
set u=D:\bat\my2
::选择命名方式 name1和name2两种
goto name1

::将文件名命名为所属文件夹名称
:name1
::循环遍历包括子文件夹的所有文件夹,获取文件夹名称
for /f "delims=" %%i in ('dir /b/ad/s %u%') do (
set a=0
set y=1
::判断文件夹是否为空,为空则删除
dir /a /b "%%i"|findstr .>nul||set/a y=0&&echo %%i是空目录将被删除&&rd "%%i"&&echo %%i已被删除
::如果文件夹非空,则修改文件夹下文件名称,否则进入下一个文件夹
if !y!==1 (
for /f "delims=" %%j in ('dir /b/a-d "%%i"') do (
if "%%~xj"==".abr" (
ren "%%i\%%j" "%%~ni!a!.abr"
echo 重命名:%%i\%%j -----------%%~ni!a!.abr>>my.txt
) else (echo %%i\%%j不是画笔文件>>my.txt)
set/a a+=1
)
)
)
goto end

::将文件名命名为所属根目录文件夹的名称
:name2
for /f "delims=" %%i in ('dir /b %u%') do (
set a=
for /f "delims=" %%j in ('dir /b/a-d/s "%u%\%%i"') do (
if "%%~xj"==".abr" (
ren "%%j" "%%i!a!.abr"
echo 重命名:%%j -----------%%i!a!.abr>>my.txt
) else (echo %%j不是画笔文件>>my.txt)
set/a a+=1
)
)
goto end

:end
endlocal
if exist my.txt  start my.txt
if exist kong.txt  start kong.txt

2007-6-21 15:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jubailan
新手上路





积分 14
发帖 6
注册 2007-6-18
状态 离线
『第 6 楼』:  

不好意思没帮你改一下就发上来了,这个是我用来修改photoshop画笔文件(.abr)的批处理命令,因为我个人需要包含了两种修改方式,而且还包含了些当时调试用的代码,不过不影响使用,你自己看看那吧也许能有帮助,本人系初学者,万望高手指教

2007-6-21 15:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chenwc520
新手上路





积分 14
发帖 9
注册 2007-6-17
状态 离线
『第 7 楼』:  楼上的朋友,测试过不行

楼上的朋友,测试过不行,不过还是谢谢你

2007-6-22 15:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yywd
中级用户





积分 358
发帖 130
注册 2005-11-12
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by jubailan at 2007-6-21 15:12:
@echo off
setlocal enabledelayedexpansion
cls
if exist my.txt del my.txt /q
if exist kong.txt del kong.txt /q
::目标文件夹路径
set u=D:\bat\my2
::选择命名方式 name1和name2两种 ...

很好用, 如能把文件名的序号0取消就更好了

2007-10-12 18:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hhzjxss
新手上路




积分 12
发帖 9
注册 2008-2-1
状态 离线
『第 9 楼』:  

路过看看!

2010-8-20 23:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: