- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
.bat-File auf Webserver starten
Hallo zusammen,
im Anschluss zu unserem Deployment, muss eine Batch-Datei auf dem Webserver gestartet werden,
woran ich leider scheiter.
Rufe ich die .exe im Skript direkt auf funktioniert das einwandfrei
exec("//172.***.**.***/inetpub/App-Preview/de/content/Index.exe ); |
jedoch ist es nun erforderlich die .exe รผber eine Batch-Datei auf dem Webserver zu starten.
wenn ich jedoch
exec("//172.***.**.***/inetpub/batch/index.bat"); |
aufrufe, dann hรคngt die Aktion und wenn ich auf dem Webserver im Taskmanager schaue, ist auch die .exe die in der .bat aufgerufen wird nicht aktiv.
Hatte jemand schon mal solch ein Problem?
Habe auch hier schon gesucht und nur https://community.e-spirit.com/people/hoebbel/blog/2010/07/21/ver%C3%B6ffentlichen-ohne-sprachverzei...
gefunden, das hat mir jedoch auch nicht weiterhelfen kรถnnen.
viele Grรผรe
Tobias
- Labels:
-
Developers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Tobias,
mรผsste hier nicht als Prozess cmd.exe aufgerufen werden mit der .bat als Parameter?
Viele Grรผรe
Michael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Michael,
falls du das so meinst, dann funktioniert das auch nicht.
exec("cmd.exe /c //172.***.***.**/inetpub/batch/index.bat"); |
viele Grรผรe
Tobias
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Tobias,
exec("cmd.exe /c //172.***.***.**/inetpub/batch/index.bat");
sieht fรผr mich eigentlich auch richtig aus.
Erhรคltst du irgendeine Fehlermeldung? Erzeugt der neue Prozess einen Error-Output?
Viele Grรผรe
Tim
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Tim,
nein so wie es aussieht wird der Befehl nicht ausgefรผhrt.
ich hab vor und nach dem exec-Befehl eine Logausgabe, die Meldung vor dem exec sehe ich im Log... mehr nicht. ich muss den Auftrag dann aber auch abbrechen weil einfach nichts passiert.
Das ganze ist aber auch in einem try-catch, sofern es einen Fehler geben wรผrde, wรผrde er ja in den catch-Zweig springen.
viele Grรผรe
Tobi
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Tobias,
macht die Bat denn noch mehr, als nur die Exe aufzurufen? Nicht, dass sie auf irgendeine Benutzereingabe o.ร. wartet...
Gruร,
Tim
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Tobias,
konntest du dein Problem inzwischen lรถsen? Oder weiรt du mittlerweile woran es liegen kรถnnte? Dann wรคre es gut, wenn du deine Lรถsung hier kurz beschreiben wรผrdest, damit alle Community-Teilnehmer etwas davon haben.
Falls du noch Unterstรผtzung benรถtigst, wรคre die genaue FirstSpirit-Version, die bei euch im Einsatz ist, eine hilfreiche Information.
Viele Grรผรe
Martin
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Tim,
nein die Bat macht nix anderes.
@Martin,
nein Problem besteht noch, werde sofern ich was hinbekomm,
hier die Antwort schreiben.
Grรผรe
Tobias
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Tobias,
wir lรถsen das in einem Projekt so:
Script |
---|
//! Beanshell script = "C:/Program Files (x86)/FirstSpirit5/deployment/XXX/XXX.bat"; import java.util.*; tasklist = context.getTasks(); t = context.getTask(); s = t.getScheduleEntry(); p = s.getProject(); log = ""; // project id, schedule entry id, master language projectId = "" +p.getId(); scheduleEntryId = "" +s.getId(); language = p.getMasterLanguage().getAbbreviation().toLowerCase(); // Command-Stack cmd = new Vector(); cmd1 = new Vector(); cmd1.addAll(Arrays.asList(new String[]{script})); //cmd1.addAll(Arrays.asList(new String[]{projectId})); //cmd1.addAll(Arrays.asList(new String[]{scheduleEntryId})); //cmd1.addAll(Arrays.asList(new String[]{language})); cmd.add(cmd1); class StreamCapture extends Thread { InputStream i; boolean useErrlog; StreamCapture(InputStream inputstream, boolean useErrorlog) { i = inputstream; useErrlog = useErrorlog; } public void run() { try { InputStreamReader reader = new InputStreamReader(i); BufferedReader buffr = new BufferedReader(reader); String l = null; while ((l = buffr.readLine()) != null) { if(useErrlog) { context.logError(log + l); } else { context.logInfo(log + l); } } //buffr.close(); //reader.close(); } catch (IOException ex) { context.logError(log + " failed: " + ex); } } } for(c: cmd) { cmdstr = ""; for (String s : c) { cmdstr += " " + s; } cmdstr = "ProcessBuilder(" + cmdstr.substring(1) + ")"; context.logInfo(log + cmdstr); // Fixme: launch as Thread with given timeout try { Process p = new ProcessBuilder(c).start(); InputStream is = p.getInputStream(); StreamCapture stdout = new StreamCapture(p.getInputStream(), false); StreamCapture stderr = new StreamCapture(p.getErrorStream(), true); stdout.start(); stderr.start(); result = p.waitFor(); //is.close(); if ( result == 0 ) { context.logInfo(log + " command completed"); } else { context.logError(log + "failed with exitcode " + result + " for " + cmdstr); // wait 3 seconds as otherwise stderr is closed too early // to get all error messages. Thread.sleep(3000); } } catch (InterruptedException e) { context.logError(log + "timeout for " + cmdstr + ": " + e); } catch (Exception e) { context.logError(log + "failed for " + cmdstr + ": " + e); } } context.logInfo(log + " script completed"); |
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Vielen Dank Daniel! Das Script nach schnellem รผberfliegen recht brauchbar aus. Vielleicht hilft es ja Tobias weiter
viele Grรผรe
Martin

