Board logo

标题: 重命名文件为上级目录名并按规律添加序号 [打印本页]

作者: chenwc520     时间: 2007-6-17 21:27    标题: 重命名文件为上级目录名并按规律添加序号

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

如: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 ]
作者: lxmxn     时间: 2007-6-18 04:35
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

作者: chenwc520     时间: 2007-6-18 14:01    标题: 谢谢版主

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

[ Last edited by chenwc520 on 2007-6-18 at 02:10 PM ]
作者: chenwc520     时间: 2007-6-18 14:17    标题: 再问

是不是改"dir /b" 为"dir /o:n" 就是按名称(字母顺序)排序???
作者: jubailan     时间: 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两种
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
作者: jubailan     时间: 2007-6-21 15:18
不好意思没帮你改一下就发上来了,这个是我用来修改photoshop画笔文件(.abr)的批处理命令,因为我个人需要包含了两种修改方式,而且还包含了些当时调试用的代码,不过不影响使用,你自己看看那吧也许能有帮助,本人系初学者,万望高手指教
作者: chenwc520     时间: 2007-6-22 15:31    标题: 楼上的朋友,测试过不行

楼上的朋友,测试过不行,不过还是谢谢你
作者: yywd     时间: 2007-10-12 18:12


  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取消就更好了
作者: hhzjxss     时间: 2010-8-20 23:35
路过看看!