如何使用PowerShell将多个xls文件转换为csv?

wie*_*rob 7 csv excel powershell xls

我正在尝试使用以下powershell脚本将多个Excel文件(xls)转换为csv:

$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)
Run Code Online (Sandbox Code Playgroud)

原则上这有效,例如我得到csv文件.但是,对于一些文件(每次运行不同),我得到一个例外:

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

另外,我收到一个消息框,询问我是否要将更改保存到源xls.

一旦我调用SaveAs,$ wb就会引用新文件.那么如何保存或放弃对源文件的更改?为什么这只发生在几个文件中?这个脚本还有其他问题吗?

更新

我将输入文件(大约200)任意划分(即不知道组的大小)为10组,并在自己的运行中处理每个组.这样做有点不方便.

提前致谢

Cil*_*vic 0

也许你可以实现一个计时器来等待一段时间?或者,您可以在脚本运行时查看目录内部,然后在每个周期(一个 xls 文件转换)后删除临时文件。