Как преобразовать несколько файлов xls в csv с помощью powershell?

Я пытаюсь преобразовать несколько файлов Excel (xls) в csv, используя следующий сценарий PowerShell:

$excel = new-object -ComObject "Excel.Application"
$excel.DisplayAlerts=$True
$excel.Visible =$false
foreach ($file in get-childitem $src_dir) {
    $wb = $excel.Workbooks.Open($file.FullName)
    $wb.SaveAs($dst_dir + $file.Name + ".csv", 6)# 6 -> csv
    $wb.Close($True)
}
$excel.Quit()
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)

В принципе это работает, например, я получаю файлы csv. Однако для нескольких файлов (меняющихся в зависимости от запуска) я получаю исключение:

Exception calling "SaveAs" with "2" argument(s): "Microsoft Office Excel cannot access the file 'C:\Users\...\AppData\Local\Temp'. ...

Кроме того, я получаю окно сообщения с вопросом, хочу ли я сохранить изменения в исходном xls.

После вызова SaveAs, $ wb ссылается на новый файл. Итак, как мне сохранить или отменить изменения в исходном файле? Почему это происходит только с несколькими файлами? Есть ли другие проблемы с этим сценарием?

Обновление

Я произвольно разделил входные файлы (около 200) (т.е. не знаю размера групп) на 10 групп и обработал каждую группу в отдельном прогоне . Это сработало, так что это несколько неудобно.

заранее спасибо

7
задан wierob 26 May 2011 в 08:24
поделиться