我目前有一个 powershell 脚本,可以很好地将 Excel 电子表格转换为 PDF 文件,但我的问题是新文件出现在父文件夹中,而不是它们来自的特定子文件夹中。我当前的脚本如下所示:
$path = "c:\users\me\Documents\Test\sub-test"
$xlFixedFormat = "Microsoft.Office.Interop.Excel.xlFixedFormatType" -as [type]
$filter = Get-ChildItem -Path $path -include *.xls, *.xlsx -recurse
$objExcel = New-Object -ComObject excel.application
$objExcel.visible = $false
foreach($wb in $filter)
{
$filepath = join-path -Path $path -ChildPath ($wb.basename + ".pdf")
$workbook = $objExcel.workbooks.open($wb.fullname, 3)
$workbook.Saved = $true
"saving $filepath"
$workbook.ExportAsFixedFormat($xlFixedFormat::xlTypePDF, $filepath)
$objExcel.Workbooks.close()
}
$objExcel.Quit()
现在,如果我将 $filepath 中的 Childpath 参数更改为 ($wb.fullname + ".pdf"),则运行时会列出完整的正确路径,但会发生错误,因为 .xls 仍包含在新文件名中。我的最终目标是实际上用 pdf 副本替换所有 excel 文件,但我只是想先弄清楚这部分,然后我可以简单地编写一个脚本来稍后删除所有 excel 文件。
任何意见将不胜感激。
谢谢,
希杰
您可以使用FullName
属性并仅替换扩展名,如下所示:
($wb.FullName -replace '\.xlsx?$', '.pdf')
这应该适用于具有扩展名的文件.xls
or .xlsx
(我假设XLXS
有问题的标题是拼写错误吗?)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)