2

我目前有一个 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 文件。任何输入将不胜感激。谢谢, CJ

4

1 回答 1

1

您可以使用该FullName属性并仅替换扩展名,如下所示:

($wb.FullName -replace '\.xlsx?$', '.pdf')

这应该适用于带有扩展名的文件.xls.xlsx(我假设XLXS有问题的标题是错字?)

于 2013-07-04T01:19:43.747 回答