Html 批处理文件,以跨多个文件夹从多个文件中删除特定字符串
我有一个包含许多子文件夹的文件夹,每个子文件夹包含几十个不同长度的Html 批处理文件,以跨多个文件夹从多个文件中删除特定字符串,html,windows,batch-file,dos,mhtml,Html,Windows,Batch File,Dos,Mhtml,我有一个包含许多子文件夹的文件夹,每个子文件夹包含几十个不同长度的.mht文件。我需要帮助创建一个批处理脚本以筛选出此特定字符串: "</BODY></HTML>" “” 在将文件添加回末尾之前,我可以将的行添加到文件中。这就是我到目前为止所做的: setlocal enabledelayedexpansion for /r %%a in (*.mht) do ( for /f "skip=11" %%b in (%%a) do (if %%b=="<
.mht
文件。我需要帮助创建一个批处理脚本以筛选出此特定字符串:
"</BODY></HTML>"
“”
在将文件添加回末尾之前,我可以将的行添加到文件中。这就是我到目前为止所做的:
setlocal enabledelayedexpansion
for /r %%a in (*.mht) do (
for /f "skip=11" %%b in (%%a) do (if %%b=="</BODY></HTML>" del %%b)
echo "stuff to add">>%%a
echo "</BODY></HTML>">>%%a
)
setlocal enabledelayedexpansion
对于(*.mht)do中的/r%%a(
对于(%%a)do中的/f“skip=11”%%b(如果%%b==”del%%b)
回显“要添加的内容”>%%a
回显'>>%%a
)
有没有办法修复我当前的脚本,或者你们中的任何人知道更简单的方法
注意:我尝试将除不需要的字符串以外的所有内容复制到临时文件中,但前11行包含特殊字符,例如:|,:代码>更新
我添加了一个新的脚本,它将在行中用所需的代码替换搜索词。脚本可以处理特殊字符
局限性
前导右括号]
字符将从行首开始修剪。这不是问题,因为HTML中不应该有以该字符开头的行(如果需要,可以修复)
百分比符号%
字符不能用于搜索词或替换词
笔记
行不能包含奇数个双引号“
,因此我将双引号”
加倍以确保为偶数。这意味着,如果在任一字符串中有引号,它们也必须加倍
要使用脚本,只需将搜索项和替换项替换为下一行代码中所需的内容即可
设置“\u=%\ u:
搜索术语=
替换术语%”
新Script.bat
起初的
这应该是你想要的。不需要延迟扩展。应该支持所有特殊字符
局限性
前导右括号]
字符将被修剪。这不是问题,因为HTML中不应该有以右括号字符开头的行。(如果需要,这可以修复)。
百分比符号%
字符不能用于搜索词或替换词
笔记
行不能包含奇数个双引号“
,因此我将双引号加倍”
,以确保为偶数。这意味着,如果字符串中有要匹配的引号,那么它们也必须加倍(不适用于您的场景)
延迟扩展不能用于此行中('echo”%xLine%%“^ | find/i“')中的/f%%S(
否则!
感叹号将导致问题
Script.bat
@echo关闭
setLocalEnableExtensions
对于(*.mht)中的/r%%F,如果存在请执行“%%~fF”(
rem限制-将修剪任何前导的[右括号]字符。
对于/f“tokens=1,*delims=]”中的%%K('type“%%~fF”^ | find/n/v”“)do(
设置“xLine=“%%L”
电话:比赛
echo(%%L>>“%%~dpF\new_%%~nF%%~xF”
)
rem del“%%~fF”
rem ren“%%~dpF\new_%%~nF%%~xF”“%%~nxF”
)
转到终点
:匹配
setlocal EnableExtensions DisableDelayedExpansion
rem将双引号加倍,以确保双引号的数量为偶数。
设置“xLine=%xLine:=”%
对于('echo“%xLine%”中的/f%%S^ | find/i“”)执行以下操作(
rem在此处添加要注入的代码。复制下面的模板回显。
rem注意特殊字符需要转义。
echo注入代码>>“%%~dpF\new_%%~nF%%~xF”
)
端部
后藤:eof
:结束
端部
暂停>nul
这将把新文件输出到new.mht
如果要用新文件替换旧文件,只需从del
和ren
命令之前删除rem
命令。更新
我已经添加了一个新的脚本,它将用所需的代码替换搜索词。该脚本可以处理特殊字符
局限性
]
字符将从行首开始修剪。这不是问题,因为HTML中不应该有以该字符开头的行。(如果需要,可以修复)%
字符不能用于搜索词或替换词“
,因此我将双引号”
加倍以确保为偶数。这意味着,如果在任一字符串中有引号,它们也必须加倍设置“\u=%\ u:
搜索术语=
替换术语%”
起初的 这应该是你想要的。不需要延迟扩展。应该支持所有特殊字符 局限性
]
字符将被修剪。这不是问题,因为HTML中不应该有以右括号字符开头的行。(如果需要,这可以修复)。%
字符不能用于搜索词或替换词“
,因此我将双引号”
加倍以确保为偶数。这意味着如果您在行中有引号
@echo off
setlocal EnableExtensions DisableDelayedExpansion
:: Limitations
:: 1. Any leading close bracket ] characters will be trimmed due to delims=].
for /r %%F in (html.txt) do if exist "%%~fF" (
for /f "tokens=1,* delims=]" %%K in ('type "%%~fF" ^| find /n /v ""') do (
set "_=%%L"
call :Expand_
)
)
goto End
:Expand_
:: NULL is a blank line or line with only a close bracket ].
if not defined _ echo. & goto :eof
:: Ensure even number of double quotation marks.
set "_=%_:"=""%"
:: Inject the code.
set "_=%_:</body>=<code>To Inject</code></body>%"
:: Escape batch special characters.
set "_=%_:^=^^%"
set "_=%_:<=^<%"
set "_=%_:>=^>%"
set "_=%_:&=^&%"
set "_=%_:|=^|%"
:: Revert quotations.
set "_=%_:""="%"
:: Display
echo(%_%
goto :eof
:End
endlocal
pause >nul
@echo off
setlocal EnableExtensions
for /r %%F in (*.mht) do if exist "%%~fF" (
rem Limitation - Any leading close bracket ] characters will be trimmed.
for /f "tokens=1,* delims=]" %%K in ('type "%%~fF" ^| find /n /v ""') do (
set "xLine="%%L""
call :Match
echo(%%L>>"%%~dpF\new_%%~nF%%~xF"
)
rem del "%%~fF"
rem ren "%%~dpF\new_%%~nF%%~xF" "%%~nxF"
)
goto End
:Match
setlocal EnableExtensions DisableDelayedExpansion
rem Double the double quotations to ensure even number of double quotations.
set "xLine=%xLine:"=""%"
for /f %%S in ('echo "%xLine%"^| find /i "</body>"') do (
rem Add your code to inject here. Copy the template echo below.
rem Note that special characters need to be escaped.
echo Inject Code>>"%%~dpF\new_%%~nF%%~xF"
)
endlocal
goto :eof
:End
endlocal
pause >nul