我在一堆单独的目录中有一堆名为content_ [0-9](内容下划线后跟一位数字)的xml文件。这些文件都有一个airport_code元素,如下所示:
<airport_code>JFK</airport_code>
然后我有一个像这样的键值映射:
JFK=US/Eastern
LHR=Europe/London
etc
我想遍历所有这些xml文件,并将正确的timezone元素附加到每个xml文件,以便JFK文件读取:
<airport_code>JFK</airport_code>
<timezone>US/Eastern</timezone>
我试图在Windows批处理脚本(安装了unix utils)中执行此操作。这是我到目前为止所做的:
@echo off
for /d %%x in (C:\directory\*) do type %%x\content_? | grep "<airport_code>" | gawk "{gsub(/ <airport_code>/, \"\"); print}" | gawk "{gsub(/<\/airport_code>/, \"\"); print}"
将读取所有xml文件的机场代码。
我如何查看每个机场代码的键值对中的值并添加适当的时区元素?这可能吗?任何帮助非常感谢。
答案 0 :(得分:0)
我设法自己解决这个问题,但只能切换到powershell。感谢评论和改进,以及在cmd中做事的建议:
foreach ($i in get-childitem $loc -recurse){
if ($i.name -match "content_"){
$content = get-content $i.FullName
$airportcode=get-content $i.FullName | select-string -pattern "<airport_code>"
$airportcode= $airportcode -replace "<airport_code>", ""
$airportcode= $airportcode -replace "</airport_code>", ""
$airportcode= $airportcode -replace " ", ""
$timezone=$timezones.Get_Item("$airportcode")
$newContent = $content -replace "</airports>", ""
$newContent = $newContent -replace " ","`n "
$newContent="$($newContent)`n<timezone>$($timezone)</timezone>`n</airports>"
Set-Content $i.FullName $newContent
}
}
请注意,这也会删除关闭元素标记&lt; / Airports&gt;然后在最后将其附加到文档中。