我正在寻求有关创建PowerShell脚本的帮助,该脚本将在指定路径中搜索同一文件夹中的多个.xml文件。
这是我的代码:
$Dir = Get-ChildItem C:\windows\system32 -Recurse
#$Dir | Get-Member
$List = $Dir | where {$_.Extension -eq ".xml"}
$List | Format-Table Name
答案 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}}