批处理取文件中的特定字符串作为文件名
本程序查找文件名中含有; $ +等特殊字符的文件,取出其文件中标签<h2>和</h2>之间的内容,把其作为文件名,替换掉原来的文件名
@echo off
rem 默认为utf-8编码
Chcp 65001
Setlocal Enabledelayedexpansion
echo begin > log.txt
::取出当前目录和所有子目录下文件名含有; $ +等字符的文件列表存入dir.txt文件中
dir /b /s /on *.html | findstr "[; $ +]" > dir.txt
::遍历dir.txt中的每一条文件名
for /f "delims=" %%i in (dir.txt) do (
set files=%%i
set name=%%~ni
set ex=%%~xi
::取出文件中<h2>标签之间的文字,因为含有空格,使用usebackq
for /f "usebackq eol=@ tokens=3* delims=<>" %%j in (`findstr "<h2>" "!files!"`) do set newname=%%j
:: 用取出的文字替换文件名
for /f "usebackq eol=@ tokens=3* delims=<>" %%j in (`findstr "<h2>" "!files!"`) do set newname=%%j
ren "!files!" "!newname!!ex!"
echo 原文件名 !files! 新文件名:!newname!!ex!>> log.txt
)
pause
goto eof