Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Batch: Windows batch: prosessin odotus

Sivun loppuun

Touho [21.03.2014 13:07:02]

#

Haluan batissani buildata VS solutionin sen jälkeen tehdä lisää komentoja.

Tämä laittaa buildauksen taustalle ja hyppää heti seuraavaan komentoon:

"C:/Program Files (x86)/Microsoft Visual Studio 11.0/Common7/IDE/devenv.exe" E:\source/solution.sln /Build "Release|x64" /Out E:\startup_build.log

Tämä kokeilu avaa Visual Studion ja hyppää taas heti seuraavaan komentoon.

start /WAIT "C:/Program Files (x86)/Microsoft Visual Studio 11.0/Common7/IDE/devenv.exe" E:\source/solution.sln /Build "Release|x64" /Out E:\startup_build.log

Windows batch ei ole mulle yhtään tuttua. Miten odotan buildin valmistumista?

aaro [21.03.2014 14:14:12]

#

start /wait "ohjelma.exe"
start /w "ohjelma.exe"

Pitäisi kyllä toimia. Kokeile laittaa vielä alkuun tyhjät lainausmerkit, jos vaikka Windows erehtyy luulemaan "Release|x64" kohtaa ikkunan otsikoksi. Jos ei kuitenkaan onnista, niin voit tehdä silmukan, jossa tarkistat onko tietty prosessi käynnissä:

tasklist /fi "imagename eq ohjelma.exe" | find /i "ohjelma.exe" > nul
if %errorlevel%==1 (
	echo Ohjelma not running
) else (
	echo Ohjelma running
)

Touho [21.03.2014 14:28:05]

#

aaro: kokeilin järkimmäistä komentoani muuttaa /WAIT -> /w, mutta ei tapahtunut muutosta.

Olisikohan ongelma komentoni parametreista? Tarvisiko koko komennon (ensimmäinen koodisample) ympärille sulut?

Käyttis: Windows 8

Metabolix [21.03.2014 14:35:41]

#

Komentorivi normaalisti odottaa, että ohjelma sulkeutuu. Ongelmasi ei siis ole komentorivissä vaan siinä, että devenv.exe sulkeutuu. Ilmeisesti devenv.exe vain käynnistää taustalle varsinaisen ohjelman ja poistuu sitten itse.

En tunne Visual Studiota, mutta arvelen, että devenv.exe ei ehkä ole ainoa tai edes paras ohjelma komentoriviltä kääntämiseen.

aaro [21.03.2014 14:48:15]

#

Touho: Edellinen viestini lähti liian aikaisin ja näköjään ehdit lukea sen ennen muokkausta.

Metabolix on luultavasti oikeassa ja kenties kometo msbuild on tarkoituksiisi sopivampi. Täällä myös vihjataan, että vaihtamalla devenv.exe -> devenv.com, pitäisi toimia.

groovyb [21.03.2014 17:02:40]

#

msbuild on työkalu jota tulisi solution -tasolla käyttää. jos taas haluat varsinaista kääntäjää käyttää yksittäisiin tiedostoihin, voit käyttää csc.exe -tiedostoa: MSDN: Command-line Building With csc.exe

Touho [24.03.2014 12:55:23]

#

Ratkaisin ongelman niin, että tein toisen batin, joka kutsuu tuota kääntökomentoa. tällöin start /WAIT toinen_bat.bat toimii odotetusti. Purkkaratkaisu kelpaa. :)

Metabolix [24.03.2014 20:24:05]

#

Kaiken järjen mukaan startin pitäisi olla tuossa turha, ja ainakin toisen batin – jossa on ilmeisesti vain yksi komento – voisi varmaankin korvata yksinkertaisesti rivillä cmd /c komento, jottei tarvitse sählätä monella tiedostolla.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta