我有一个.html文件titlepage.html
,它包含以下行:
<span class="titlepage modified">Modified: Feb 13, 2020 </span>
问题是,有时我忘记更改“修改:”日期。
我运行了一个.bat文件,它将这个titlepage.html
移动到正确的位置,因此我认为在.bat文件中添加一个子例程在移动它之前更新日期是有意义的。
我当前的.bat文件如下所示:
@echo off
setlocal enabledelayedexpansion
set infile=titlepage.html
set outfile=result.html
Set find=Modified:
set replace="<span class="titlepage modified">Modified: %DATE% </span>"
del result.html
for /F "tokens=1,2 delims=" %%n in (!infile!) do (
set LINE=%%n
set TMPR=!LINE:%find%=%replace%!
echo !TMPR!>>%outfile%
)
与我的长相有关的那句话是:<span class="titlepage modified">"<span class="titlepage modified">Modified: 04/10/20 </span>" Feb 13, 2020 </span>
因此,它成功地输入了我想要的信息,但我需要它来替换整个行,而不仅仅是用于查找的部分。
*注意日期是任意的,所以我不能对整行执行查找。
所以我想: 1.查找包含字符串2的行。用我的新输入替换整行。
提前谢谢。
发布于 2020-04-11 03:50:06
@echo off
setlocal enabledelayedexpansion
set "target=./titlepage.html"
set "destination=./titlepage.html"
set "find=(?mi)^.*Modified:.*$"
set "replace=<span class=\"titlepage modified\">Modified: %DATE% </span>"
powershell -noprofile -command^
$content=get-content -path '!target!';^
$result=$content -replace '!find!', '!replace!';^
set-content -path '!destination!' -value $result
powershell
读取目标./titlepage.html
,执行替换操作并写入目标./titlepage.html
。
正则表达式模式在一行中搜索Modified:
。find
变量包含模式并使用选项(?mi)
。m
是多行模式,而i
是不区分大小写的。如果希望不区分大小写,请删除i
。
正则表达式模式:
(?mi)
正则表达式选项。m
是多行的,而i
是不区分大小写的。^
默认情况下,匹配必须从字符串的开头开始;在多行模式下,必须从行的开头开始。.
通配符:匹配除\n以外的任何单个字符。*
匹配前一个元素0次或多次。$
默认情况下,匹配必须发生在字符串的末尾或字符串末尾的\n之前;在多行模式下,必须发生在行尾之前或行尾的\n之前。替换字符串:
\"
逃逸嵌套用于命令行解析到powershell
的双引号。有关更多信息,请查看正则表达式语言-快速引用。
行尾的^
( powershell
命令)是行的延续。
https://stackoverflow.com/questions/61145640
复制相似问题