|
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
|
|
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
状态 离线
|
|
2010-8-20 23:35 |
|