【发布时间】:2019-06-06 14:24:38
【问题描述】:
用于终止特定 Excel 文件的适当 PowerShell cmdlet 是什么。命令
Stop-Process -Name "excel"
关闭所有打开的 Excel 应用程序。
提前致谢!
【问题讨论】:
标签: powershell
用于终止特定 Excel 文件的适当 PowerShell cmdlet 是什么。命令
Stop-Process -Name "excel"
关闭所有打开的 Excel 应用程序。
提前致谢!
【问题讨论】:
标签: powershell
实际上,excel 在excel.exe 的一个实例中打开.xlsx 文件
杀死 excel.exe 将杀死所有打开的工作簿。 MainWindowTitle 仅显示活动工作簿,因此您将无法按属性匹配被动工作簿。
关闭特定工作簿的更好方法是通过com对象获取excel实例。
关闭与Name(文件名)或FullName(文件路径)匹配的工作簿
$excel = [System.Runtime.InteropServices.Marshal]::GetActiveObject("Excel.Application")
$excel.DisplayAlerts = $false
$excel.Workbooks | %{if($_.Name -imatch "excel file name"){$_.Close()}}
【讨论】:
-imatch 运算符是一个正则表达式,如果你不熟悉它,你可以很容易地将-imatch 更改为-like。例如$_.FullName -like "M:\Items.xlsx" 甚至 -eq "M:\Items.xlsx"
试试这个:
Get-Process excel –ea 0 | Where-Object { $_.MainWindowTitle –like ‘*report.csv*’ } | Stop-Process
这是来自 MS 的官方指南:
【讨论】:
$Application = New-Object -ComObject excel.application
$Application.Visible=$True
$workbook = $application.Workbooks.open("C:\mySheet.xlsx")
Start-Sleep -Seconds 5
$workbook.close($false)
问题是在文档关闭时窗口仍然打开。
希望它仍然有帮助。 BR
【讨论】: