Можем ли мы использовать файл .bat для запуска скрипта напрямую, не заходя в abaqus›file›runscript?

Я пытаюсь создать файл .bat, который может проверить, открыт ли сеанс abaqus, и если он открыт, то откройте приглашение запуска сценария. Для этого я использую следующий код:

@echo off
if exist c:\SIMULIA\Abaqus\6.14-3\code\bin\abq6143.exe goto openscript
else exit
:openscript
echo "file exist"   
abaqus cae noGUi=D:\Saurabh\example\macro1.py
pause

Командное окно появляется с сообщением «файл существует», затем появляется следующая ошибка

Abaqus License Manager проверил следующие лицензии: "cae" версии 6.14 с сервера Flexnet myshec184706d ‹13 из 130 лицензий остаются доступными>

и командное окно внезапно исчезает. "macro1" на самом деле записывается с помощью диспетчера макросов, и когда я запускаю его из файла>runscript, он работает нормально.
на самом деле я хочу запросить "runscript" из этого файла .bat в уже открытом приложении abaqus. Этот файл .bat необходим для отслеживания, т. е. того, сколько раз используются сценарии. может ли кто-нибудь помочь мне с этой проблемой?

заранее спасибо!


person sourabh goyal    schedule 28.06.2017    source источник
comment
в чем именно проблема?:   -  person Andre Kampling    schedule 28.06.2017
comment
@Андре спасибо за ответ. когда я запускаю файл bat с abaqus cae noGUI=D:\Saurabh\exmple\macro1.py, появляется окно cmd с файлом msg, существующим около 2 секунд, а затем начинает печатать какое-то сообщение, и окно cmd немедленно исчезает. при этом создается файл abaqus.rpy. я хочу, чтобы этот макрос1 запускался в уже открытом сеансе abaqus.   -  person sourabh goyal    schedule 28.06.2017
comment
Наличие внешнего процесса, управляющего уже открытым графическим интерфейсом, было бы весьма нетривиальным. Вам нужно будет сделать что-то вроде написания кода Java для имитации активности мыши и клавиатуры. В любом случае вам следует отредактировать вопрос, чтобы более четко уточнить, что вы на самом деле пытаетесь сделать.   -  person agentp    schedule 28.06.2017
comment
Условие if с ветвью else определенно написано неправильно и приводит к сообщению об ошибке, если исполняемый файл не существует. Используйте вместо этих двух строк if not exist C:\SIMULIA\Abaqus\6.14-3\code\bin\abq6143.exe exit /B для выхода из выполнения пакетного файла, когда файл не существует. В противном случае пакетное выполнение продолжается на следующей строке. Откройте окно командной строки и запустите if /? для справки по команде IF и прочитайте ответ на синтаксическую ошибку IF ELSE в пакете файл?   -  person Mofi    schedule 30.06.2017


Ответы (1)


Насколько мне известно, невозможно обновить модельную базу данных, которая уже открыта для чтения/записи. Однако, если вы хотите просто прочитать или скопировать данные из открытого сеанса, вы можете попытаться получить доступ к данным с помощью вспомогательного файла Mdb. Например:

try:
    openMdb(filename)
except AbaqusException, Msg:
    sys.__stdout__.write("File may be in use by another CAE session.\n")
    sys.__stdout__.write("Error Msg: {0}\n".format(Msg))
    sys.__stdout__.write("Now opening file in a temporary auxiliary mdb.\n")
    mdb = Mdb()
    mdb.openAuxMdb(filename)
# The auxMdb object has a few methods documented in the scripting user's manual
# Otherwise, copy a model from the auxMdb and then you'll have full access.
# Don't forget to save your work, if you made changes to the Mdb. Note that saving
# will result in a new on-disk cae file in the current work directory.

После того, как файл cae открыт и у вас есть доступ к Mdb или его копии, как показано выше, вы можете 1) использовать функцию макроса напрямую в своем скрипте Python или 2) вызвать свой скрипт макроса, используя:

import allAbaqusMacros
allAbaqusMacros.Macro1()
person Matt P    schedule 28.06.2017
comment
Спасибо, Мэтт П. На самом деле я хочу создать файл .bat или .exe, с помощью которого я могу запускать приглашение runscript непосредственно в abaqus cae. Этот файл необходим для отслеживания, например, сколько раз скрипты запускаются в abaqus. - person sourabh goyal; 29.06.2017
comment
@sourabhgoyal Вы можете вызвать скрипт cae/macro из файла bat, если хотите. Но дело в том, что если Mdb уже открыт в другом сеансе, вы будете заблокированы, и вы можете захотеть справиться с этим, как я показал вам в этом ответе. - person Matt P; 29.06.2017
comment
@sourabhgoyal Я добавил обновление, которое показывает, как вы можете запускать макрос из обычного сценария CAE/Python, когда у вас открыт файл и Mdb. - person Matt P; 29.06.2017