【发布时间】:2019-08-24 01:09:20
【问题描述】:
我有 3 个文件夹,里面有一些文件和 3 个扩展名。 我想计算每个文件夹的文件总数,然后我想将输出写入 XML 文件。我试过了,但我只能将输出写入一个文件夹的 XML 文件。
$FindFolder = Get-ChildItem -Directory "D:\"
foreach ($folder in $FindFolder) {
$jpg = Get-ChildItem -Name "D:\$folder" -Recurse -File -Include *.jpg |
Measure-Object |
ForEach-Object {$_.Count}
$png = Get-ChildItem -Name "D:\$folder" -Recurse -File -Include *.png |
Measure-Object |
ForEach-Object {$_.Count}
$gif = Get-ChildItem -Name "D:\$folder" -Recurse -File -Include *.gif |
Measure-Object |
ForEach-Object {$_.Count}
# Write to xml file
$Output = @"
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="Tool.css"?>
<report>
<heading>Final Report</heading>
<foldername>$folder</foldername>
<jpg>$jpg</jpg>
<png>$png</png>
<gif>$gif</gif>
</report>
"@
$Output | Out-File "D:\Reports.xml" -NoNewline -Force
}
我上面这个脚本的输出是:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="Tool.css"?>
<report>
<heading>Final Report</heading>
<foldername>folder1</foldername>
<jpg>11</jpg>
<png>11</png>
<gif>0</gif>
</report>
预期的输出是:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="Tool.css"?>
<report>
<heading>Final Report</heading>
<foldername>folder1</foldername>
<jpg>11</jpg>
<png>11</png>
<gif>0</gif>
<foldername>folder2</foldername>
<jpg>1</jpg>
<png>18</png>
<gif>9</gif>
<foldername>folder3</foldername>
<jpg>16</jpg>
<png>13</png>
<gif>1</gif>
</report>
<foldername>NN</foldername> 的总数取决于我有多少个文件夹。
【问题讨论】:
-
$folder 的每次迭代都会覆盖之前的输出文件。要生成有效的 XML 文件,请使用 PowerShell 的内在 XML 工具。
-
不,这不是我需要的:(
标签: xml powershell