2015-08-11 4 views
-3

Я знаю, что это кажется легким, но я уже пробовал 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. Есть ли альтернативы этому?

ответ

0

Я думаю, вы должны смотреть на следующее:

How to check in command-line if a given file or directory is locked (used by any process)?

Посмотрите на первый ответ от: @dbenham, которые мы используем и работает фантастически! Мы используем это для проверки того, что файлы веб-журнала не используются Apache Tomcat, прежде чем мы их застегнем.

Смежные вопросы