中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-15 06:21
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 重命名文件为上级目录名并按规律添加序号
重命名文件为上级目录名并按规律添加序号 查看 2,116 回复 8
楼 主 重命名文件为上级目录名并按规律添加序号 发表于 2007-06-17 21:27 ·  中国 广东 珠海 电信
新手上路
积分 14
发帖 9
注册 2007-06-17 20:54
UID 91639
性别 男
状态 离线
重命名 当前目录下所有 指定的扩展名文件 为上级目录名,两个文件以上自动添加序号.

如: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 ]
2 发表于 2007-06-18 04:35 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线
Try this

@echo off&Setlocal EnableDelayedExpansion

set /p file_type=输入文件的扩展名,格式为:
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-06-22 15:30
3 谢谢版主 发表于 2007-06-18 14:01 ·  中国 广东 珠海 电信
新手上路
积分 14
发帖 9
注册 2007-06-17 20:54
UID 91639
性别 男
状态 离线
测试有效,我开始没说清楚,如果做成是包括子文件夹呢,应该怎么写?而且文件排序是根据什么排?
文件名也是改成它上一级目录名

[ Last edited by chenwc520 on 2007-6-18 at 02:10 PM ]
4 再问 发表于 2007-06-18 14:17 ·  中国 广东 珠海 电信
新手上路
积分 14
发帖 9
注册 2007-06-17 20:54
UID 91639
性别 男
状态 离线
是不是改"dir /b" 为"dir /o:n" 就是按名称(字母顺序)排序???
5 发表于 2007-06-21 15:12 ·  中国 江西 南昌 电信
新手上路
积分 14
发帖 6
注册 2007-06-18 22:08
UID 91745
性别 男
状态 离线
@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
6 发表于 2007-06-21 15:18 ·  中国 江西 南昌 电信
新手上路
积分 14
发帖 6
注册 2007-06-18 22:08
UID 91745
性别 男
状态 离线
不好意思没帮你改一下就发上来了,这个是我用来修改photoshop画笔文件(.abr)的批处理命令,因为我个人需要包含了两种修改方式,而且还包含了些当时调试用的代码,不过不影响使用,你自己看看那吧也许能有帮助,本人系初学者,万望高手指教
7 楼上的朋友,测试过不行 发表于 2007-06-22 15:31 ·  中国 广东 珠海 电信
新手上路
积分 14
发帖 9
注册 2007-06-17 20:54
UID 91639
性别 男
状态 离线
楼上的朋友,测试过不行,不过还是谢谢你
8 发表于 2007-10-12 18:12 ·  中国 广东 深圳 宝安区 电信
中级用户
★★
积分 358
发帖 130
注册 2005-11-12 16:29
UID 45117
状态 离线
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取消就更好了
9 发表于 2010-08-20 23:35 ·  中国 湖南 怀化 电信
新手上路
积分 12
发帖 9
注册 2008-02-01 15:59
UID 109967
性别 男
状态 离线
路过看看!
论坛跳转: