Holding matlab execution while dos/system command is running
14 次查看(过去 30 天)
显示 更早的评论
Hi all,
Z (see code below) is a batch file to be executed using 'dos'. The challenge however is that V requires 'x.log' which is an output files after completely executing the batch file. What I observe is error message saying that the output file do not exist; apparently because the 'x.log' is yet to be generated by the batch file. Please How can I make matlab hold on until after the batch file has been completed so that the x.log file can be available as input to V?
z = dos('x.bat'); v = fileread('x.log')
Thank you in advance.
OlFat
0 个评论
采纳的回答
Image Analyst
2014-4-20
Maybe you can enter a loop until it's created
z = dos('x.bat');
% Wait for file to be created.
maxSecondsToWait = 100; % Wait 100 seconds at most.
secondsWaitedSoFar = 0;
while secondsWaitedSoFar < maxSecondsToWait
if exist('x.log', 'file')
break;
end
pause(1); % Wait 1 second.
secondsWaitedSoFar = secondsWaitedSoFar + 1;
end
if exist('x.log', 'file')
v = fileread('x.log')
else
warningMessage = sprintf('Warning: x.log never got created after waiting %d seconds', secondsWaitedSoFar);
uiwait(warndlg(warningMessage));
end
4 个评论
Image Analyst
2020-9-7
It will break from the loop as soon as the file is detected - 10 seconds in your example. By the way, instead of exist(), this is how you do it now:
if isfile('x.log')
更多回答(1 个)
Walter Roberson
2014-4-20
dos() does wait for the end of the command. However if the command involves opening up an independent graphics window instead of working in command-line mode, then as far as MS Windows is concerned the .bat is finished. There are tools that can be used to detect whether a process is executing if necessary.
1 个评论
Devalla lakshmipathirao
2020-9-7
Could you please tell more about the tools you are talking about? Thanks.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!