批处理系列(4) - 通过文本内容行命名文件

结合本系列文章第一篇,看本文。

准备一个文本文件,里面是一行行即将要命名的文件名;准备一个要命名的目录文件;
保存本代码到通过文本内容重命名文件.bat,执行按提示操作。

@echo off
@REM @Author: xianghongai@gmail.com
title 通过文本内容重命名文件  by:小可(xianghongai@gmail.com)
setlocal EnableDelayedExpansion
:GTCONTINUE
cls
echo 通过文本内容重命名文件
echo -----------------------------
set /p importTxt=拖文本文件按Enter键:
set /p filesPath=拖目录路径按Enter键:
set i=0
for /f "usebackq tokens=1 delims==" %%a in (`more /s %importTxt%`) do (
    set /a i+=1
    set "author[!i!]=%%a"
)
set j=0
for /f "usebackq" %%b in (`dir /b "%filesPath%\*.*"`) do (
    set /a j+=1
)
set k=!i!,!j!
set nMax=0
for %%a in (%k%) do (
   if %%~a gtr !nMax! set nMax=%%~a
)
rem echo 最大值:!nMax!
set nMin=!nMax!
for %%a in (%k%) do (
   if %%~a lss !nMin! set nMin=%%~a
)
rem echo 最小值:!nMin!

set c=0
set FilesExist=0
echo.
echo 文件即将按以下格式重命名:
echo -----------------------------
for /f "usebackq delims==" %%b in (`dir /a-d /b /on /tc "%filesPath%"`) do (
     set /a c+=1
     cd /d %filesPath%
     if !c! leq !nMin! (
        for %%a in (!c!) do (
            if not exist !author[%%a]!%%~xb (
                echo "%%b" "!author[%%a]!%%~xb"
            ) else (
                set /a FilesExist+=1
                echo 已有文件 "!author[%%a]!%%~xb"
            )
         )
     )
)
echo -----------------------------
if !FilesExist! gtr 0 (
    echo.
    echo 当前目录有 !FilesExist! 个相同命名的文件,
    echo 可能会引起文本内容行和对应文件的错位!
    echo.
)
echo 按Enter键确认操作
pause >nul
set d=0
for /f "usebackq delims==" %%b in (`dir /a-d /b /on /tc "%filesPath%"`) do (
    set /a d+=1
    cd /d %filesPath%
     if !d! leq !nMin! (
        for %%a in (!d!) do ( if not exist "!author[%%a]!%%~xb" ( ren "%%b" "!author[%%a]!%%~xb" ) )
     )
)
echo 搞定
pause >nul
goto GTCONTINUE
exit

转载保留原文地址和作者名,只为错误勘正和信息补充。
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)

转载于:https://www.cnblogs.com/daxiang/p/8572658.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值