Olen koettanut toteuttaa sovellusta, jolla pystyy suorittamaan DOS-komentoja. Ongelmaksi on nyt muodostunut Windowsin komentorivin palauttaman datan tulostaminen.
Esimerkiksi, kun yritän suorittaa komentoa:
net user Vieras *
niin saan seuraavan vastauksen:
Anna käyttäjän salasana: Vahvista salasana:
Komentojen suorittamiseen olen käyttänyt Javan Runtime-oliota ja komentorivin InputStreamia olen tulkinnut Scanner-oliolla. Olen joskus aikaisemminkin törmännyt Scannerin kohdalla tuohon samaan ilmiöön, mutten nyt kuollaksenikaan muista, miten ongelma ratkesi.
Veikkaus: Käyttämäsi ohjelma luottaa siihen, että enter tulee käyttäjältä. Siksi ohjelma tulostaa rivit ilman omia rivinvaihtoja. Tämä on ihan tyypillistä, eikä asialle voi muuta kuin käyttää omia viritelmiä: yritä toimittaa käyttäjän syöte ohjelmalle rivi kerrallaan, ja jokaisen rivin jälkeen tulosta ylimääräinen rivinvaihto, kuten komentorivilläkin tapahtuu.
No itse voin neuvoa, että tuon komennon voi laittaa yhteen pötköö:
net user Vieras salasana
jolloin käyttäjän vieras salasanaksi tulee: salasana
ja tavaran printtaus toimii näin:
Runtime r = Runtime.getRuntime(); String komento = "net user Vieras *"; Process p = r.exec(komento); BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()),8000); String inputLine; while ((inputLine = in.readLine()) != null) { System.out.println(inputLine); } in.close();
toivottavasti auttoi!
Kiitos vastauksista.
Aihe on jo aika vanha, joten et voi enää vastata siihen.