Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 使用数组中的值命名文件_Arrays_Xml_File_Powershell_Msxml - Fatal编程技术网

Arrays 使用数组中的值命名文件

Arrays 使用数组中的值命名文件,arrays,xml,file,powershell,msxml,Arrays,Xml,File,Powershell,Msxml,我想用数组中存储的值命名文件 我有一个文件夹,里面有一些.xml文件。我已经用MSXSL处理了这些文件,并将输出文件写入了一个输出文件夹 我想用与原始文件相同的名称命名输出文件。但是,目前我的脚本正在调用文件[0].xml,[1].xml,[2].xml,等等 以下是我目前的脚本: [array]$files = Get-ChildItem c:\powershell\ -Filter *.xml [array]$names = Get-ChildItem c:\powershell\

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

我有一个文件夹,里面有一些.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)
}