Zum Inhalt springen

Empfohlene Beiträge

Geschrieben (bearbeitet)

Hallo Leute,

erstmal mein Programm:


Process p = pb.start();


OutputStream os = p.getOutputStream();

OutputStreamWriter osw = new OutputStreamWriter(os);

BufferedWriter bw = new BufferedWriter(osw);

try {

	bw.write("CMD-Datei.cmd");

} catch (Exception e)

{

	System.out.println("Fehler!");

}

bw.newLine();

bw.write("echo --- get Env ---");

bw.newLine();

bw.write("set");

bw.newLine();

bw.write("ENDE");

bw.newLine();

bw.write("exit");

bw.flush();


InputStream is = p.getInputStream();

InputStreamReader isr = new InputStreamReader(is);

BufferedReader ibr = new BufferedReader(isr);

String line;


boolean boolLineEnv = false;


while ((line = ibr.readLine()) != null) {

	if(line.contains("set !"))

	{

		continue; // [STELLE X]

	}

	else if(line.contains("ENDE"))

	{

		break;

	}

	else

	{

		if(line.contains("get Env"))

		{

			boolLineEnv = true;

		}

		if(boolLineEnv)

		{

			alEnvSet.add(line);

		}

		//System.out.println(line);

	}

}

Soweit so gut. Das funktioniert alles einwandfrei. Nun wird in der "CMD-Datei.cmd" leider eine andere CMD-Datei aufgerufen. Das an sich ist kein Problem, kommen wir aber mal dazu was die zweite Batch-Datei macht: Die Batch Datei ließt eine sogenannte EnvSet-Datei einer bestimmten Firma aus. Wir sind an diese EnvSet-Datei gebunden, sowie an den Kopf der Datei der ca. so aussieht:

!----------------------------------------------------------

!   Name der Firma  -  Umgebungsvariablendatei

!----------------------------------------------------------

! Modus: ...

! Typ: ...

! Zeit: ...

!----------------------------------------------------------

Danach folgen dann ein paar Umgebungsvariablen:

EnvironmentVariableBeispiel1=C:\Temp

EnvironmentVariableBeispiel2=C:\Temp

EnvironmentVariableBeispiel3=C:\Temp

So, die Batch Datei (No.2) ruft jetzt diese Datei auf und schreibt vor alles was in der Txt-Datei dieser gewissen Firma steht ein Set und schickt es zurück an die Konsole. Wenn ich die Batch-Datei selber unter einer Shell ausführe, passiert nichts, vielleicht wird die ErrorLevel-Variable gesetzt, das kann mir aber egal sein, weil das script weiterläuft. Wenn ich jetzt über Java eine Shell aufmache, und mein Java-Programm quasi alles durchläuft, was die shell auch macht, dann bekomme ich einen silent-Crash ca. an [sTELLE X]. Sobald Stelle X 3 mal durchlaufen wurde, crasht mein Java und es passiert nix mehr. Dann kann ich nur noch Über meine Entwicklungsumgebung (Eclipse) den roten Knopf drücken. Über output sind die letzten 3-4 Outputs:

C:\WINDOWS>set !---------------------------------------------------------- 

C:\WINDOWS>set ! 

C:\WINDOWS>set !---------------------------------------------------------- 

C:\WINDOWS>set !

HILFE!

Ich weis nicht, wie man mit einem Silent-Crash umgeht, da ich sowas nur aus C++ kenne und C++ bekanntlich öfter vor die Wand fährt bevor so etwas passiert. Hier ist keine Fehlerabfrage mehr möglich, weil das Programm einfach steckenbleibt. ("Stack Overflow"? "Buffer Underrun"?)

mfg:(

Bearbeitet von Wegginho
nur so
Geschrieben

Der Befehl in der Batch-datei sieht im Moment so aus. Das ist quasi die zum Fehler führende Zeile. Ich habe ehrlich gesagt 0 Ahnung von Batch-Programmierung und werd wohl erstmal ne Weile googlen müssen bevor ich das verstehe.

for /f "eol=#" %%l in (%ENV%) do set %%l

Falls jemand lehrreiche Informationen zu For-Konstrukten unter Batch hat her damit ;D

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...