Я знаю, что это кажется легким, но я уже пробовал 2 вещи и не работал. Что особенно важно в этой ситуации, так это то, что у меня есть пакетный файл, вызванный электронной почтой, входящей в Outlook. В большинстве случаев электронные письма запускаются в одно и то же время, поэтому Outlook может сразу получать 10 электронных писем, поэтому выполнение пакетного файла 10 раз в течение 2 секунд. Единственная цель - открыть файл excel, когда приходит первое письмо, и для каждого письма после этого ничего не делать, поскольку файл excel уже открыт.Какова наилучшая практика только для открытия файла, если он еще не запущен?
Первый метод, который я попытался было проверить, если файл был открыт, пытаясь «скопировать» его в другое место:
echo.N|copy /-y NUL "P:\Pricing\Pricing Templates\Pricing Models\trial\LP3 Model vcongestion outlook.xlsm">NUL&&(
echo.LP3 Model v7c.xlsm is free!
start excel "LP3 Model vcongestion outlook.xlsm"
) || (
echo.LP3 Model vcongestion outlook.xlsm is in use!
)
Это иногда, но не всегда работает, потому что может быть 1 второй буфер между временем выполнения первого файла и временем открытия файла и, следовательно, блокировкой для копирования. Поэтому вместо этого я пытался просто проверить, был ли открыт
tasklist /nh /fi "imagename eq EXCEL.exe" | find /i "EXCEL.exe" > nul &&(
echo found
)|| (
start excel "P:\Pricing\Pricing Templates\Pricing Models\trial\LP3 Model vcongestion outlook.xlsm"
)
Однако я получаю то же самое для предположительно по той же причине применение Excel. Есть ли альтернативы этому?