【发布时间】:2018-12-13 07:14:09
【问题描述】:
我有一个 PowerShell 脚本,可将文件夹中的 .xls 文件转换为 .csv 文件。我有八个要转换为 .csv 的 .xls 文件(尽管数量无关紧要),它们位于 C:\Users\UserName\Documents\ABC\RawData\CSV\WorkingFolder .就将 .xls 转换为 .csv 而言,该脚本运行良好,但问题是 .csv 文件 [在创建后] 被保存到 C:\Users\UserName\Documents,其中是错误的位置!我希望将 .csv 文件保存到原始 .xls 文件所在的同一文件夹中:C:\Users\UserName\Documents\ABC\RawData\CSV\WorkingFolder,这也是我在其中运行脚本的文件夹。我试过-path . 无济于事。任何帮助,将不胜感激!脚本如下。
$excel = new-object -ComObject "Excel.Application"
$excel.DisplayAlerts = $True
$excel.Visible = $False
$src_dir = $(get-location).Path # this obtains the source location, but not sure how I might
# be able to use it
foreach ($file in get-childitem *.xls) {
$wb = $excel.Workbooks.Open($file.FullName)
$wb.SaveAs($file.Name + ".csv", 6) # 6 -> csv
$wb.Close($True)
}
$excel.Quit()
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
get-childitem *.xls | foreach { remove-item -path $_.fullname }
# last line of script deletes the .xls files after they have been converted to .csv,
# more to unclutter than for anything else
【问题讨论】:
-
$file.Name解析为文件名,而不是完整路径,因此文件保存到当前工作目录(在$wb.SaveAs步骤中)。如果您使用$wb.SaveAs($file.FullName + ".csv", 6),那么您将获得所需的功能。 -
感谢您的帮助!它奏效了。
标签: powershell