我在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进程打开文件。
非常感谢!
答案 0 :(得分:3)
不要尝试使用该文件启动Excel,而只需启动文件:
"C:\Project4\MonthlyTracking.xlsx"
这将打开excel,如果它没有与该文件一起运行, 它会在正在运行的excel中打开文件, 它会给你一个错误,如果它已经打开 - 你可以使用:
"C:\Project4\MonthlyTracking.xlsx" 2>nul
if errorlevel neq 0 echo file already opened
答案 1 :(得分: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"
)