powershell脚本问题将多个excel文件转换为csv

问题描述:

使用下面的代码转换指定目录中的所有excel文件。当我尝试将一个文件转换为csv时,它按照预期工作,但是当我尝试将所有excel文件转换为csv时,不会发生任何异常,并且文件不会被转换。powershell脚本问题将多个excel文件转换为csv

$path = get-childitem -path "\\sharedrive\excelfiles\" -filter *.xlsx 

foreach ($file in $path) 
{ 

$Excelfilename = $file.fullname 
$CSVfilename = "" + $file.Basename 

$xlCSV=6 

$Excel = New-Object -comobject Excel.Application 
$Excel.Visible = $False 
$Excel.displayalerts=$False 
$Workbook = $Excel.Workbooks.Open($ExcelFileName) 
$Workbook.SaveAs($CSVfilename,$xlCSV) 
$Excel.Quit() 

} 

我以前也遇到同样的问题,这TechNet文章是非常有用的:https://technet.microsoft.com/en-us/library/ff730962.aspx

基本上你做的一切权利,但.Quit()方法是不是正是你因为它摆脱了程序而不是COM对象。我们需要进一步去一层,并调用.NET Framework来释放如下的COM对象,然后释放$ Excel变量。

$Excel.Quit()

[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Excel)

Remove-Variable $Excel

这应该给你你在找什么,并适当地清理环境,让您在循环回通过并作出改变一切。 csv's