Скрипт Powershell не перебирает дочерние папки - PullRequest
0 голосов
/ 25 апреля 2018

Я снял этот скрипт онлайн, и он отлично работает для преобразования файлов в родительской папке.Однако он не выполняет итерацию по дочерним папкам.Я не получаю никаких ошибок, и я проверил правильность всех разрешений для папки.Кроме того, у меня есть сценарии, которые закодированы аналогично для файлов * .docx и * .pptx, и они успешно работают.Этот, однако, не работает, как ожидалось.Есть идеи?

$path = "c:\converted\" 
$xlFixedFormat = "Microsoft.Office.Interop.Excel.xlFixedFormatType" -as [type] 
$excelFiles = Get-ChildItem -Path $path -include *.xls, *.xlsx -recurse 
$objExcel = New-Object -ComObject excel.application 
$objExcel.visible = $false 
foreach($wb in $excelFiles) 
{ 
 $filepath = Join-Path -Path $path -ChildPath ($wb.BaseName + ".pdf") 
 $workbook = $objExcel.workbooks.open($wb.fullname, 3) 
 $workbook.Saved = $true 
"converted $wb.fullname" 
 $workbook.ExportAsFixedFormat($xlFixedFormat::xlTypePDF, $filepath) 
 $objExcel.Workbooks.close() 
 #get rid of conversion copy 
 #Remove-Item $wb.fullname 
} 
$objExcel.Quit() 

1 Ответ

0 голосов
/ 25 апреля 2018

$excelFiles будет содержать подпапки, но ваша конструкция $filepath использует только исходный $path и текущий $wb.BaseName без учета того, что текущий $wb.FullName может содержать более длинный путь.

Заменить

 $filepath = Join-Path -Path $path -ChildPath ($wb.BaseName + ".pdf") 

на

$filepath = $wb.fullname -replace $wb.extension,".pdf"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...