close command / dos window

72 Ansichten (letzte 30 Tage)
Tyler Murray
Tyler Murray am 6 Sep. 2016
Beantwortet: Kevin Rawson am 7 Apr. 2019
I am running a .bat file using either system() or dos() which opens a cmd window. I would like to close the cmd window when it is done. I have searched on here but haven't found a solution that works.
  1 Kommentar
dpb
dpb am 5 Jun. 2017
Show the command you're executing...

Melden Sie sich an, um zu kommentieren.

Antworten (4)

Kevin Rawson
Kevin Rawson am 7 Apr. 2019
Simplest way without modifying your original batch file would be to add an exit command to your system call.
system('yourScript.bat && exit &')
This will complete execution of "yourScript.bat" in a new DOS command window, and then close the spawned window.

dpb
dpb am 5 Jun. 2017
If you must use the trailing '&' to dispatch the command window to the background while the Matlab system continues, then you don't have control of that window with just the supplied system. Others have shown a way to kill a process; the alternate would be to add an EXIT command as the last entry in the .bat file to close the session when the routine terminates.

Nagesh
Nagesh am 11 Jan. 2017
Bearbeitet: Walter Roberson am 12 Jan. 2017
let's say you want to kill both your progam (yourprogram.exe) and the cmd window that gets opened with the system command, you can use the following command
[status1]=system('"C:\Windows\System32\taskkill.exe" /F /im yourprogram.exe /im cmd.exe &');
This will kill 'yourprogram' and also closes 'cmd' window
  2 Kommentare
Walter Roberson
Walter Roberson am 12 Jan. 2017
That looks to me as if it would close all of the command windows. You might plausibly have another one that you did not want closed.
dpb
dpb am 27 Dez. 2018
Bearbeitet: dpb am 27 Dez. 2018
The other issue is that passing off TASKLIST or TASKKILL to the system via dos() spawns a new CMD.EXE besides any other that may be open -- w/o some other variable like the WINDOWTITLE if it were set uniquely when the process was started, you can't tell "who's who in the zoo" as to which it is, specifically, to kill.
(I was just thinking about the same problem as was spawning a bunch of editor windows to do some cleanup on Excel spreadsheet comments outside the sorry edit function it supplies for the purpose internally which is got me here now...)
ADDENDUM
I'd done this ages ago and had forgotten all I once knew...ran into one kicker I can't presently seemingly get around -- tasklist /fi "WINDOWTITLE eq title string" never returns a match, even if copy and paste what is returned by the /V option for the specific window so can't find a unique CMD.EXE amongst others that way, either. :(
ADDENDUM SECOND
Albeit one could return the list of all and parse it separately to find the PID, I suppose...
ADDENDUM THIRD
The simplest answer (just tested) is to do as suggested in above Answer; just add exit to the batch file to close the shell when the app exits back to command line. Done!

Melden Sie sich an, um zu kommentieren.


Walter Roberson
Walter Roberson am 7 Sep. 2016

Kategorien

Mehr zu Get Started with MATLAB finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by