请帮我构建一个 Windows 批处理文件来替换文件的第 n 行。要么,要么提取第 n 行并将其存储在变量中。这将用于自动安装 Mozilla 扩展。
我知道如何在 Linux 中使用 SED 来做到这一点,但是我缺乏字符串操作的批处理技能。
例如,我正在使用这个批处理脚本为 Microsoft Windows 机器安装 Mozilla Thunderbird Enigmail 扩展:
if %PROCESSOR_ARCHITECTURE% equ x86 (
set SOFTWARE=SOFTWARE
set PROGRAMFILES=C:\Program Files
) else (
set SOFTWARE=SOFTWARE\Wow6432Node
set PROGRAMFILES=C:\Program Files ^(x86^)
)
wget --no-check-certificate https://addons.mozilla.org/en-US/thunderbird/downloads/file/219050/enigmail-1.5.2-tb+sm.xpi -O %TEMP%\enigmail.xpi
mkdir "%PROGRAMFILES%\Mozilla Thunderbird\extensions\enigmail"
unzip -o %TEMP%\enigmail.xpi -d "%PROGRAMFILES%\Mozilla Thunderbird\extensions\enigmail"
reg add HKLM\%SOFTWARE%\Mozilla\Thunderbird\Extensions /v enigmail@example.com ^
/t REG_SZ /d "%PROGRAMFILES%\Mozilla Thunderbird\extensions\enigmail" /f
我遇到的问题是我需要使用匹配的注册表项更新 Mozilla 扩展的 %PROGRAMFILES%\Mozilla Thunderbird\extensions\enigmail\install.rdf 清单以安装扩展。以下安装清单包含多个 Mozilla ID(例如<em:id>{GUID}</em:id>
)。
<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest">
<em:id>{daf44bf7-a45e-4450-979c-91cf07434c3d}</em:id>
<em:version>1.0</em:version>
<em:type>2</em:type>
<!-- Target Application this extension can install into,
with minimum and maximum supported versions. -->
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>1.5</em:minVersion>
<em:maxVersion>4.0.*</em:maxVersion>
</Description>
</em:targetApplication>
<!-- Front End MetaData -->
<em:name>sample</em:name>
<em:description>A test extension</em:description>
<em:creator>Your Name Here</em:creator>
<em:homepageURL>http://www.example.com/</em:homepageURL>
</Description>
</RDF>
我需要将第一个<em:id>
install.rdf替换为<em:id>enigmail@example.com</em:id>
. 要么,要么我需要通过删除周围的“”来提取第一个 GUID“{daf44bf7-a45e-4450-979c-91cf07434c3d}”<em:id></em:id>
并将 ID 与花括号一起存储在 %GUID% 变量中,并将该变量用作注册表项的名称(例如,reg add HKLM\SOFTWARE\Wow6432Node\Mozilla\Thunderbird\Extensions /v %GUID%)。
有关详细信息,请参阅https://developer.mozilla.org/en-US/docs/Adding_Extensions_using_the_Windows_Registry和https://developer.mozilla.org/en-US/docs/Building_an_Extension#Create_the_install_manifest。
替换或提取 GUID 的解决方案将满足我的需求。这仅取决于是否更容易从 install.rdf 清单中提取第一个 GUID,剥离周围并将此 {GUID} 存储在 %GUID% 变量中,还是用ID 格式<em:id></em:id>
替换第一个 GUID 。<em:id>enigmail@example.com</em:id>