功能:查找固定字符串,找到字符串所在行内容,处理行内容,并以行内容重命名当前文本。
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 |