Pass argumenter og kør .cmd fil i windows ved hjælp af java

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil køre og sende argumenterne til '.cmd' -filen ved hjælp af Java-programmet. Jeg har kontrolleret de eksisterende løsninger, men intet virker i mit tilfælde.


Fra kommandolinjen kører jeg under kommandoen efter at komme ind i katalog C:/users/project/solr/bin


solr.cmd -s "C:users/github/example/solr-config"


Så, solr.cmd får argumenter fra den anden katalog, og så kører den solr-forekomsten.


Jeg har prøvet dette, men jeg er ikke sikker på, hvordan man giver parametre til Runtime.getRuntime():


     Runtime run = Runtime.getRuntime();

     Process p = null;  

     String cmd = "cmd /c start C:/users/project/solr/bin C:users/github/example/solr-config";
     Process pr = run.exec(cmd);


Jeg har fulgt dette link: Hvordan kører jeg en batchfil fra mit Java-program?


Kan nogen hjælpe mig med det her.

Bedste reference


Jeg løst det ved at ændre cmd som solr.cmd forventer -s også som argument:


String cmd = "cmd /c start C:/users/project/solr/bin/solr.cmd -s C:users/github/example/solr-config;

Andre referencer 1


Der er forskel på 'det virker ikke' og 'det viser ikke noget'. Ifølge dokumentationen:



  Som standard har den oprettede delproces ikke sin egen terminal eller konsol. Alle dets standard-I/O-operationer (dvs. stdin-, stdout-, stderr) -operationer vil blive omdirigeret til overordnet proces, hvor de kan fås via de strømme, der er opnået ved hjælp af metoderne getOutputStream (), getInputStream () og getErrorStream (). Hovedprocessen bruger disse strømme til at føje input til og få output fra underprocessen. Da nogle native platforme kun leverer begrænset bufferstørrelse til standardindgangs- og udgangsstrømme, kan manglende øjeblikkelig skrivning af indgangsstrømmen eller aflæsning af substrømens udgangsstrøm gøre det muligt for underprocessen at blokere eller endog blokere.



Hvis du vil hente de data, som din proces måske har udskrevet på standard I/O, skal du læse dem fra ovenstående streams.