批处理脚本变量重命名并保留数据,提取XML生成纯数值HTML
批处理脚本修改方案:移除XML标签保留纯数值
直接上修改后的完整脚本:
@echo off :: 下载XML天气数据 start /b /WAIT %~dp0bitsadmin.exe /transfer "currentstats" https://w1.weather.gov/xml/current_obs/KMGM.xml %~dp0Weather.xml :: 提取温度和湿度的纯数值,去掉XML标签 for %%a in (%~dp0Weather.xml) do ( :: 用<和>作为分隔符,提取中间的数值部分(tokens=3) for /f "tokens=3 delims=<>" %%b in ('type "%%a" ^| findstr /i "temp_f"') do set "tem1=%%b" for /f "tokens=3 delims=<>" %%b in ('type "%%a" ^| findstr /i "relative_humidity"') do set "hum1=%%b" ) :: 生成目标HTML文件 echo ^<HTML^> > %~dp0Weather.html echo Temperature: %tem1% >> %~dp0Weather.html echo ^<BR /^> >> %~dp0Weather.html echo Humidity: %hum1% >> %~dp0Weather.html echo ^</HTML^> >> %~dp0Weather.html
关键改动说明:
- XML标签剥离:在提取数据的for循环里,指定
delims=<>把每行按尖括号拆分,tokens=3直接取中间的数值段(比如<temp_f>75.0</temp_f>拆分后,第3段就是75.0) - 简化HTML生成:直接用
echo输出变量和HTML标签,去掉了多余的嵌套for循环,避免重复处理内容 - 变量引用修正:设置变量时用
set "tem1=%%b"(带引号避免空格问题),输出时直接用%tem1%,不会带出多余引号或标签
效果验证:
修改后生成的HTML内容完全符合期望:
<HTML> Temperature: 75.0 <BR /> Humidity: 62 </HTML>
内容的提问来源于stack exchange,提问作者Rick1975
相关产品推荐
相关产品推荐

