我正在尝试修改一些.htm
文件,将Name1 Lastname1, Name2 Lastname2
替换为Name1 Lastname1
。
我找到了here,并根据自己的需要更改了代码:
REM @echo off
setlocal disableDelayedExpansion
:Variables
set "_strFind=Titel: Name1 Lastname1, Name2 Lastname2<br>"
set "_strInsert=Titel: Name1 Lastname1<br>"
set /p PC=PC?:
set /p Name=Name?:
set InputFile=\\%PC%\C$\Users\%username%\AppData\Roaming\Microsoft\Signatures\GR.htm
set OutputFile=\\%PC%\C$\Users\%username%\AppData\Roaming\Microsoft\Signatures\GR1.htm
:Replace
">"%OutputFile%" (
for /f "usebackq delims=" %%A in ("%InputFile%") do (
if "%%A" equ "%_strFind%" (echo %_strInsert%) else (echo %%A)
)
)"
这什么也没做;我做错了什么?以及如何找到错误?
EDIT01:
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Arial",sans-serif'> John Doe GmbH<br>
Blabla: John Doe, Johnny B.Good<br>
Bla bla bla<br>
Partner:<br>
Bla bla bla bla <o:p></o:p></span></p>
</td>
我想删除, Johnny B.Good
部分。
答案 0 :(得分:0)
.htm(l)
文件很可能是用UTF8编码的,所以我什至不尝试(纯)批处理。
检查编码并尝试此(未经测试的)批处理:
@Echo off
set "infile=GR.htm"
set "outfile=GR1.htm"
set "Replace=, Johnny B.Good"
set "Prefix=John Doe"
powershell -NoP -c "(Get-Content '%infile%' -raw -Enc UTF8) -replace '(?<=%Prefix%)%Replace%'|Set-Content '%outfile%' -Enc UTF8"
答案 1 :(得分:0)
这是一个batch-file答案,它使用powershell-v2.0,(兼容windows-7)来执行任务。
在此版本中,您不预先知道Name1
,Lastname1
,Name2
或Lastname2
中的任何一个;仅Titel:
,,
和<br>
。
@PowerShell -NoP "(GC 'input.htm' -Enc UTF8) -Replace '(Titel:[^,]*).+?(?=<br>)','$1'|SC 'output.htm' -Enc UTF8"
您只需更改input
.htm
文件的名称。如果您要修改多个htm
文件,显然可以在它们上循环运行PowerShell
命令,我将留给您自己编写代码。