使用数组中的值命名文件
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)
}
我想用存储在数组中的值来命名文件。
我有一个包含一些 .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)
}