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