在指定的路径中搜索同一文件夹中的多个.xml文件

时间:2018-08-16 17:25:14

标签: powershell

我正在寻求有关创建PowerShell脚本的帮助,该脚本将在指定路径中搜索同一文件夹中的多个.xml文件。

  1. 该脚本应提供文件的完整路径。
  2. 该脚本还应该提供一个日期。

这是我的代码:

$Dir = Get-ChildItem C:\windows\system32 -Recurse
#$Dir | Get-Member
$List = $Dir | where {$_.Extension -eq ".xml"}
$List | Format-Table Name

4 个答案:

答案 0 :(得分:0)

$folder = "C:\Windows\System32"
$results = Get-ChildItem -Path $folder -File -Include "*.xml" | Select Name, FullName, LastWriteTime

这将仅返回所有xml文件,并显示文件名,文件的完整路径以及上次写入的时间。 “ -File”开关仅在Powershell 4及更高版本中可用。因此,如果在Windows 7或Windows 2008 R2 Server上执行此操作,则必须确保将WMF更新为4或更高版本。没有文件,第二个类似的样子。

#Powershell 2.0
$results = Get-ChildItem -Path $folder -Include "*.xml" | Where {$_.PSIsContainer -eq $false} | Select Name, FullName, LastWriteTime

答案 1 :(得分:0)

我喜欢上面提到的Select方法,因为它的语法更简单,但是如果出于某种原因,您只想要文件名及其绝对路径,而没有要选择的管道附带的列标题(也许是因为它将用作输入)到另一个脚本或通过管道传递到另一个函数),您可以执行以下操作:

tf.nn.leaky_relu

我不确定Select是否会让您忽略标题。

如果您需要对结果进行排序,或者文件扩展名已删除,您还可以查看以下答案,以提供更多的想法或尝试的方法: https://stackoverflow.com/a/31049571/10193624

答案 2 :(得分:0)

我能够进行一些更改,将结果导出到.txt文件,尽管它提供了结果,但我只想隔离相同的.xml文件。

$ParentFolder = "C:\software"
$FolderHash = @{}

$Subfolders = Get-ChildItem -Path $ParentFolder

foreach ($EventFolder in $Subfolders) {
    $XMLFiles = Get-ChildItem -Path $EventFolder.fullname -Filter *.xml*

    if ($XMLFiles.Count -gt 1) {
        $FolderHash += @{$EventFolder.FullName = $EventFolder.LastWriteTime}
    }
}

$FolderHash

答案 3 :(得分:0)

从您的自我回答中判断,您需要一个包含多个XML文件的目录列表,而无需递归搜索这些目录。在这种情况下,您的代码可以简化为以下形式:

Get-ChildItem "${ParentFolder}\*\*.xml" |
    Group-Object Directory |
    Where-Object { $_.Count -ge 2 } |
    Select-Object Name, @{n='LastWriteTime';e={(Get-Item $_.Name).LastWriteTime}}