吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 974|回复: 8
收起左侧

[其他原创] 批处理之查找字符串并重命名(重复加序号)

[复制链接]
良有益 发表于 2024-6-23 11:44
功能:查找固定字符串,找到字符串所在行内容,处理行内容,并以行内容重命名当前文本。
1、以阅读源为例,处理后是小说源名称。
2、处理前需要自行分割阅读源。
3、代码有注释,可自行修改。
以下是代码:
@echo off
setlocal EnableDelayedExpansion
title 通过搜索输出文本内容并重命名文件

REM 提前定义搜索字符串
set "searchstr="bookSourceName":"
echo 要搜索的字符串是:%searchstr%
echo.

REM 获取当前目录下的.txt文件列表
for /F "delims=" %%F in ('dir /b *.txt') do (
    call :processFile "%%F"
)
echo 文件处理完成。
echo.
pause
goto :eof

:processFile
set "fileName=%~1"
set "found=false"
set "newName="
set "counter=0"
set "baseNewName="

REM 逐行读取文件内容
for /F "usebackq delims=" %%L in ("%fileName%") do (
    set "line=%%L"

    REM 查找包含搜索字符串的行并处理
    if not defined newName if not "!line:%searchstr%=!" == "!line!" (
        set "found=true"
        echo 当前查找文件:!fileName! 
        echo.
        echo 字符串所在行内容是:%%L
        echo.

        REM 以下是文本提取
        set "content=%%L"
        REM 删除搜索字符串
        set "content=!content:%searchstr%=!"
        REM 删除空格、逗号、引号和单引号       
        set "content=!content: =!"
        set "content=!content:'=!"
        set "content=!content:"=!"
        set "content=!content:,=!"

         REM 删除不能用于文件名的字符为下划线
         set "content=!content:\=!"
         set "content=!content:/=!"
         set "content=!content:?=!"
         set "content=!content:"=!"
         set "content=!content:<=!"
         set "content=!content:>=!"
         set "content=!content:|=!"

         REM 删除*号,不会弄,试了好多方法,不行,会的自行添加,以下也不正确

        echo 内容整理后是:!content!
        echo.
        set "baseNewName=!content!"
        set "newName=!baseNewName!.txt"
    )
)

REM 重命名
if "!found!" EQU "true" (
    :renameCheck
    if exist "!newName!" (
        REM 文件名重复
        set /a "counter+=1"
        set "newName=!baseNewName!_!counter!.txt"
        goto :renameCheck
    ) else (
        echo 文件原始名称:!fileName!
        echo.
        echo 重命名为:!newName!
        echo.
        ren "!fileName!" "!newName!"
        echo 重命名处理完成.
    )
) else (
    echo 文件 !fileName! 未找到指定字符串,未执行重命名操作。
)
goto :eof


使用方法:
1.本地建txt文本;
2.复制粘贴代码进文本内;(注意文本编码格式:否则可能乱码)
3.改文本后缀为bat;
4.放入需要处理的txt文本文件夹内。
5.点击批处理文件。

成品下载地址:https://www.123pan.com/s/97lKVv-p4Tlh.html

免费评分

参与人数 5吾爱币 +11 热心值 +5 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
morningb0y + 1 + 1 用心讨论,共获提升!
laozhang4201 + 1 + 1 热心回复!
janken + 1 + 1 热心回复!
anA10 + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

何西烛 发表于 2024-6-23 16:13
批处理对特殊字符不好处理

如果是我,在Directory Opus中不花多久就能用js脚本搞定这个重命名   并且没有批处理的特殊字符限制

免费评分

参与人数 1热心值 +1 收起 理由
chuanglue + 1 已统一回复,谢谢!

查看全部评分

平淡最真 发表于 2024-6-23 16:13
chuanglue 发表于 2024-6-23 17:28
本帖最后由 chuanglue 于 2024-6-23 17:34 编辑

发错贴了,抱歉
理想的海洋 发表于 2024-6-23 18:04
为啥我试了不行  提示找不到指定字符串   
理想的海洋 发表于 2024-6-23 18:08
批处理我也研究过   在一个共享文件夹里面放一个文本文件  然后其他电脑共享方式比较本地的这个文件的某一行和这个内容的这一行替换   能成功   缺点就是速度慢 还有就是不能两台电脑同时运行比较   想试试你这个呢  竟然失败了
uygh 发表于 2024-6-23 23:23
批处理是一个很好用的东西
龍謹 发表于 2024-6-24 07:20
这个真的可以有,我入坑的系统是MS-DOS
morningb0y 发表于 2024-6-24 10:02
一起学习,共同进步!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-15 03:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表