批量删除文件中符合 tppabs="...."tppabs="...."tppabs="...."tppabs="...." 的字符
@echo off
setlocal enabledelayedexpansion
md jg
for %%i in (*.htm) do (
set wenjian=%%i
for /f "tokens=* usebackq" %%j in ("%%i") do (
set yihang=%%j
call :zzzzz
)
)
echo 完成.
pause
exit
:zzzzz
set diyi=
set syh="
set linshi=!yihang!
:NextChar
if not "!linshi!"=="" (
if "!linshi:~0,8!"=="tppabs=!syh!" (
set linshi=!linshi:~8!
goto kkk
)
set diyi=!diyi!!linshi:~0,1!
set linshi=!linshi:~1!
goto NextChar
)
:kkk
if not "!linshi!"=="" (
if "!linshi:~0,1!"=="!syh!" (
set linshi=!linshi:~1!
goto jjj
)
set linshi=!linshi:~1!
goto kkk
)
:jjj
if "!linshi!"=="" (
echo !yihang! >>jg\!wenjian!
) else (
echo !diyi!!linshi! >>jg\!wenjian!
)
::查找当前文件夹中 htm 文件,删除其中由网站下载器添加的 tppabs
链接
::以上保存为.cmd 文件,与要处理的文件放在一个文件夹里
::此脚本效率不高,也不通用,只处理以下格式
::1 一行中没有tppabs="....."
::2 一行中tppabs="....."后面有至少一个字符
::3 若一行出项两次以上,只处理第一次出现。
::代码分两部分,主程序和子程序
::主程序先建立一个文件夹,用来存放处理过的文件,因为以echo 方
式写新文件不能与原文件重名,不建立文件夹需要再改名一次。
::主程序由两个for 循环组成,一个遍历当前文件夹下所有的htm 文件 ,
一个遍历每个htm 文件的所有行,对每行都调子程序处理
::主程序结束需要加exit 终止运行,由于子程序在后面,不加exit 会
多运行一次子程序
::子程序不能写在for循环内部,因为子程序中有goto语句,会中断for
循环的运行
::子程序不可写为另外单独的文件,否则参数传递时,会截断长字符串
::子程序处理每一行 yihang,并保存到新文件中
::变量 linshi 复制 yihang 的值
::查找 linshi 中的 tppabs="....." ,并删除
::删除思路:取出 tppabs 前的字符,保存到变量 diyi 里,以及第二
个双引号后的字符,保存在 linshi 里,重新组合
::把双引号先保存到变量syh 里,否则判断字符串中是否有双引号时会
出错
::NextChar 到 kkk 之间,查tppabs,找到则准备找第二个引号,找不
到则截去 linshi 的第一个字符,返回到 NextChar 循环查找,知道最
后一个字符。
::kkk 到 jjj 之间,查找第二个引号,找不到则截去 linshi 的第一个
字符,返回到 kkk 循环查找,知道最后一个字符,找到则取出引号后的
所有字符。
::处理完后,保存。
批量重命名
::批量重命名*.asp.htm 改为 *.htm
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b *.htm') do (
set str=%%i
::截取出第0个到倒数第7个字符。都是从0开始数
set str=!str:~0,-7!htm
::重命名
ren %%i !str!
)
批量替换文件中的指定字符串
::把.hh 文件中的 asp.htm 替换为 htm,并保存为 .htm 文件
@echo off
setlocal enabledelayedexpansion
for %%i in (*.hh) do (
set b=%%i
for /f "tokens=* usebackq" %%j in ("%%i") do (
set a=%%j
set a_01=!a:asp.htm=htm!
echo !a_01! >> "!b:~0,-2!"htm
)
)
echo 完成.
pause
批量删除文件中符合tppabs="...."的字符
批量重命名
批量替换文件中的指定字符串