批处理:批量分类移动文件

    下面是一个移动多个文件到以各个文件的后缀名命名的文件夹中的批处理文件,当有重名文件时,会自动重命名文件后再移动:

@echo off
setlocal EnableDelayedExpansion
:NEXT
for /r D:\testfolder\t\ %%i in (*.*) do (
set t=%%~xi
set f=!t:~1,5!
set p=%%~dpi
set n=%%~nxi
if exist D:\testfolder\test\!f!\!n! (
rename !p!!n! n!n!
set a=1
)else move !p!!n! D:\testfolder\test\!f!\!n!
)
if !a! equ 1 (
set a=0
goto NEXT
)
PAUSE


    使用时,要把D:\testfolder\t\ 改成源文件所在文件夹路径;把D:\testfolder\test\改成目标文件夹的路径,但是要保证目标文件夹内有这些后缀名命名的文件夹。


相关知识:


for /参数 %变量 in (集) do 命令
FOR分四种参数 D L R F

参数 /R
/R参数之后还可带盘符及路径
for /r 此处可以带有路径 %变量 in (集) do 命令
在/r 之后的那个路径,指包含它之下的整个目录树(相当于DOS命令tree里的范围)中的所有目录,如果仅为一个英文句点 . ,是指当前路径下的目录树,如果省略了路径则特指当前目录,而之后的in (集)则相当于与前面每个目录相配的文件集



FOR 变量参照的替换已被增强。您现在可以使用下列
选项语法:

~I - 删除任何引号("),扩展 %I
%~fI - 将 %I 扩展到一个完全合格的路径名
%~dI - 仅将 %I 扩展到一个驱动器号
%~pI - 仅将 %I 扩展到一个路径
%~nI - 仅将 %I 扩展到一个文件名
%~xI - 仅将 %I 扩展到一个文件扩展名
%~sI - 扩展的路径只含有短名
%~aI - 将 %I 扩展到文件的文件属性
%~tI - 将 %I 扩展到文件的日期/时间
%~zI - 将 %I 扩展到文件的大小
%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩展
到找到的第一个完全合格的名称。如果环境变量名
未被定义,或者没有找到文件,此组合键会扩展到
空字符串

可以组合修饰符来得到多重结果。

详细出处参考:http://www.jb51.net/article/31284.htm


同理,下面再附一个批量修改文件名的批处理文件:
@echo off
setlocal EnableDelayedExpansion
for /r H:\path_x\ %%i in (*.*) do (
set s=%%i
set n=%%~nxi
set b=!n:~0,3!
set c=!n:~3!
if "!b!"=="abc" (
rename !s! abd!c!
)
)
PAUSE


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值