如何将.XLS&.XLXS文件转换为.PDF格式并将它们返回到Powershell中的每个原始子文件夹?

我目前有一个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”),则会在运行时列出完整的正确path,但由于.xls仍包含在新文件名中,因此会发生错误。 我的最终目标是实际上用pdf副本replace所有的excel文件,但是我只是想先弄清楚这个部分,然后我可以简单地编写一个脚本来删除所有的excel文件。 任何input将不胜感激。 谢谢,CJ

您可以使用FullName属性,并像这样replace扩展名:

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

这应该适用于扩展名为.xls.xlsx文件(我认为XLXS问题标题是一个错字?)