使用数组中的值命名文件

Name files with values from array

我想用存储在数组中的值来命名文件。

我有一个包含一些 .xml 文件的文件夹。我已经用 MSXSL 处理了这些文件,并将输出文件写入了一个输出文件夹。

我想将输出文件命名为与原始文件同名。但是目前我的脚本正在调用文件 [0].xml[1].xml[2].xml

到目前为止,这是我的脚本:

[array]$files = Get-ChildItem c:\powershell\ -Filter *.xml    
[array]$names = Get-ChildItem c:\powershell\ -Filter *.xml | Select-Object Name

$current = 0

foreach ($file in $files) {
    c:\powershell\msxsl.exe $files[$current] transform.xslt -o c:\powershell\output$names[$current].xml
    $current ++
}

我显然弄乱了 for 循环的主线。

MSXSL.EXE 采用 -o 开关,它命名输出文件。我试图引用我的 $names 数组的元素,但它不起作用。

没有理由维护 2 个数组,也没有理由手动递增计数器。

对于原始文件路径,请使用 FullName 属性,对于单独的名称,请使用 Name:

$files = Get-ChildItem c:\powershell\ -Filter *.xml    

foreach ($file in $files) {
    c:\powershell\msxsl.exe $file.FullName transform.xslt -o $(Join-Path 'c:\powershell\output' $file.Name)
}