2015-08-24 3 views
0

Я хочу назвать файлы со значениями, хранящимися в массиве.Файлы имен со значениями из массива

У меня есть папка с некоторыми 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 ++ 
} 

Я, очевидно, портя основную линию моего цикла.

MSXSL.EXE принимает переключатель -o, который называет выходной файл. Я попытался ссылаться на элементы моего массива $names, но он не работает.

ответ

2

Нет причин поддерживать 2 массива и не увеличивать счетчик вручную.

Для Orignal путь к файлу, используйте 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) 
} 
+0

Это гениально - спасибо Матиас :) – JamesPy