【发布时间】:2023-04-07 00:42:01
【问题描述】:
我需要一些关于我编写的 PS 脚本的帮助。我对 Powershell 没有经验,但根据我在网上找到的内容,我能够编写一个脚本来完成我想要的。但是,我无法让它在任何子文件夹上工作。
目前我有一个名为“C:\Temp\Test”的文件夹。该文件夹内有许多子文件夹,每个用户一个,名为 Greg、Tom、Alice 等。因此文件夹结构如下所示
C:\Temp\Test\Greg
C:\Temp\Test\Tom
C:\Temp\Test\Alice
等等……
每个人的子文件夹都包含数十个甚至数百个 .JPG 和 .TIF 图片文件。每个图片文件都需要有一个同名的 .XML 文件,其中包含姓名和出生日期等属性。我为每个用户创建了第一个 .XML 文件,并创建了以下脚本来扫描文件夹并为每个剩余的图片文件创建 .XML 文件。然后将第一个 .XML 文件的内容复制到新创建的文件中。这是我目前所拥有的:
$sourceFiles = Get-ChildItem -Path "C:\Temp\Test\*" -Recurse -File -Include *.tif,*jpg
$destinationFiles = Get-ChildItem -Path "C:\Temp\Test" -Recurse -File -Filter *.xml
foreach($sourceFile in $sourceFiles) {
$exists = $destinationFiles | Where-Object {$_.BaseName -eq $sourceFile.BaseName}
if(!$exists) {
New-Item -type File "C:\Temp\Test\$($sourceFile.BaseName).xml"
}
}
$file1 = Get-ChildItem "C:\Temp\Test" -Filter *.xml | Select-Object -First 1
$file2 = Get-ChildItem "C:\Temp\Test" -Filter *.xml -recurse -Exclude $file1
cd "C:\Temp\Test"
Get-Content $file1 | Add-Content $file2
当我在“C:\Temp\Test”目录中有测试图片时,脚本运行良好。我想不通的是如何更改脚本以在每个人的子文件夹上运行并将新的 .XML 文件放在图片所在的子文件夹中。如果有人对我如何做到这一点有任何想法,或者我如何改进这个脚本我将非常感谢你的想法。正如我所说,我对PS不是很有经验。谢谢!
【问题讨论】:
标签: xml powershell-3.0