如何读取存储在当前日期文件夹中的xml文件?

时间:2012-10-30 12:23:32

标签: powershell directory datetime-format

我有xml文件存储在当前日期文件夹中,如此处所示 - Refer this link
现在我想读取xml的特定部分并在csv文件中打印它。 在链接中如何使用$ location作为输入来仅基于当前日期文件夹读取xml文件?

我尝试使用:

$locatexml = -item -path $rptdir -itemtype Directory -Name ("XML_$(Get-Date -f yyyy_mm_dd)")

但是我得到一个错误 - 在一元运算符' - '之后缺少表达式。 如何将当前文件夹分配给$ locatexml?,以便我能够引用当前日期文件夹中存在的所有xml文件?

我的代码试图读取位于日期文件夹中的xml文件:

从$ locatexml中删除-itemtype,我将全名分配给另一个变量$ locatexml2。

$locatexml = get-item -path $reportdir -Name ("XML_$(Get-Date -f yyyy_MM_dd)")
**Do I need $locatexml2 here?**
$locatexml2 = "$($location.fullname)" 

Function DoRpt($locatexml2)
{
$rptOut="Asm"
Get-ChildItem  $locatexml2 | ForEach-Object {        
$file = Get-Content -path $locatexml2\$_ -totalcount 15
try {
$asm = [regex]::matches($file[5], 'asm=".*" ')[0].value -replace 'asm="(.*)" ','$1' 
      $rptOut=$rptOut+"`n$Asm,$locatexml2\$_"        
} catch {}   
}
Set-Content -path $testdir\test.csv -value $rptOut
}

XML如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Rpt Version="10.0">
<Targets>
<Target="\\Shared\Data\SB\app\bin\test.dll">
<Mods>
<Mod="test.dll" asm="1.0.0000.000">
</Mod>
</Mods>
</Target>
</Targets>
</Rpt>

我尝试了下面将$ locatexml指定为metnioned的所有方法,但我没有通过..上面的代码中是否有我遗漏的内容?

我真的需要$ locatexml2吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

在父目录中执行dir,指明您要查找的文件夹名称。我假设$rptdir是一个字符串,表示以日期命名的子目录所在的父目录。

$locatexml = dir -Path $rptdir -Filter "XML_$(Get-Date -f yyyy_MM_dd)"

答案 1 :(得分:0)

这会将Directory对象分配给$ locationxml,其中$ rptdir中的文件夹名称与yyyy_MM_dd匹配:

$locationxml = $rptdir | Where-Object {$_.Name -eq (Get-Date -f yyyy_MM_dd)}

请注意,日期格式字符串... 使用大写字母MM来获取月(问题中的示例语法具有小写mm,这将为您提供分钟数。)