windows schtasks如果没有打开则打开excel,如果没有打开则打开工作表
Posted
技术标签:
【中文标题】windows schtasks如果没有打开则打开excel,如果没有打开则打开工作表【英文标题】:windows schtasks open excel if not open, then open worksheet if not open 【发布时间】:2013-10-26 06:28:08 【问题描述】:我在 Windows 7 schtasks 工具中创建了一个任务。它提醒我在本月 15 日打开我应该查看和更新的 Excel 工作簿。方便。
问题是,大约有 60% 的机会我已经打开了 Excel,而我想我什至有很小的机会打开了该工作簿。那么结果一点也不优雅。该任务尝试打开 Excel 的另一个副本,这抱怨只读访问权限,工作簿本身也是如此。
在 SCHTASKS 或 BATCH 文件(或您推荐的任何其他方便的 Windows 工具)中是否有方法首先检查 Excel 是否打开,如果打开,只需切换到它,而不是打开第二个Excel的副本?我看到了关于在 .BAT 文件中使用 TASKLIST 来检查它是否打开的说明:
TASKLIST /FI "IMAGENAME eq EXCEL.EXE" 2>NUL | FIND /I /N "EXCEL.EXE">NUL
IF "%ERRORLEVEL%" EQ "0" START excel "C:\Project4\MonthlyTracking.xlsx"
但如果 BATCH 文件打开,我不知道如何对其做出反应。我在 BATCH 文件中没有看到告诉已经运行的 excel 进程打开文件的方法。
非常感谢!
【问题讨论】:
【参考方案1】:您可以让 Windows ShellExecute 功能逻辑使用默认关联程序(在本例中为 Excel)来启动文件,该怎么做?只是尝试直接运行文件,而不是将文件作为应用程序的参数传递。
TASKLIST /FI "IMAGENAME eq EXCEL.EXE" 2>NUL | FIND /I "EXCEL">NUL && (
START /B "ShellExecute Excel File" "C:\Project4\MonthlyTracking.xlsx"
)
【讨论】:
谢谢。据我了解,我认为这与斯蒂芬的答案大致相同。你介绍了 ShellExecute,我对此了解不多。它可能会提供一些优势,但如果没有它,他似乎可以满足我的需求......直到我遇到的最后一个技巧问题(见那里)。【参考方案2】:不要尝试使用文件启动 Excel,而是仅启动文件:
"C:\Project4\MonthlyTracking.xlsx"
这将打开 excel,如果它没有与该文件一起运行, 它将在正在运行的 excel 中打开文件, 如果它已经打开,它会给你一个错误 - 你可以使用它:
"C:\Project4\MonthlyTracking.xlsx" 2>nul
if errorlevel neq 0 echo file already opened
【讨论】:
@MarkGoldfain:文件类型和可执行文件之间的“转换”是通过assoc
(该文件是什么文件类型)和ftype
(该文件类型使用什么可执行文件)完成的。试试assoc .xlsx
(这给了我Excel.Sheet.12
)。然后输入“ftype Excel.Sheet.12`(给我"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" /dde
)
@MarkGoldfain:我不知道如何从批处理中告诉应用程序,该怎么做。相反,您可以使用msg %username% "MonthlyTracking already open - please don't forget to update it"
(如果 %errorlevel% eqs 32...)以上是关于windows schtasks如果没有打开则打开excel,如果没有打开则打开工作表的主要内容,如果未能解决你的问题,请参考以下文章
Js判断移动端是否存在客户端:如果存在则打开,如果不存在则下载
window.open 出现在 webkit 浏览器后面,但如果我打开 facebook 或 twitter 页面则不会?