# Probleme mit dem Ausführen einer .bat



## Alex_winf01 (10. Jan 2008)

Folgendes:

Ich habe auf dem Rechner A meine Applikation liegen und starte es mit einer start.bat. In der start.bat steht nur java.Login.

Nun gehe ich an den Rechner B, gehe über Netzwerkumgebung und melde mich auf dem Rechner an. Ich rufe die start.bat auf und kann es auf dem Rechner B nicht ausführen, da ich folgende Fehlermeldung bekomme:



> CMD.EXE wurde mit \\Rechner A\G\Alex\Eigene Dateien als aktuellem Verzeichnis gestartet UNC-Pfade werden nicht unterstützt. Stattdessen wird das Windows-Verzeichnis als aktuelles Verzeichnis gesetzt.



Dann wird die start.bat ausgeführt und ich bekomme die Fehlermeldung "class Login nicht gefunden". 

Wenn ich allerdings meinen Editor öffne und die Login ausführe, klappt es wunderbar.

Ich vermute mal, dass irgendwas nicht mit dem Pfad stimmt.

Kann mir jemand helfen? Diese Vorgehensweise wird vom Kunden verlangt!!


----------



## The_S (11. Jan 2008)

Naja, wenn deine BAT von einem anderen Verzeichnis aus gestartet wird, dann sucht die BAT Datei bzw. Java auch in diesem Verzeichnis nach der Login-Klasse, vom welchem aus sie gestartet wurde.

btw: es heißt 



> java Login



und nicht

java.Login


----------



## Alex_winf01 (11. Jan 2008)

> java.Login



War ein Tippfehler. 

Und wie kann ich das "Problem" umgehen? Hintergrund: Kunde hat ein Terminalserver, auf dem Datenbank und Applikation liegt. Anwender ruft die Applikation von seinem Rechner auf dem Terminalserver auf.

Und noch was:

Wenn ich es aus meinem Joe heraus öffne, funzt es ja. D. h. ich rufe Login.java auf und start das Programm. Das funzt.


----------



## lolkind (11. Jan 2008)

vllt funzt es wenn du eine .bat machst, die den auf dem andern Rechner befindliche .bat-datei öffnet


----------



## lolkind (11. Jan 2008)

wart ich glaub der Befehl in Windows ist:   "cmd>soon"
musst mal schauen

auch "cmd>at" hat was damit zu tun und wenn mich meine Erinnerung nicht ganz trüb war im zusammenhang mit "at" auch "/interactive", was auf dem Fremdrechner das Programm/Datei öffnet!

Gruß


----------



## Atze (11. Jan 2008)

hm, da will sich doch nicht etwa jemand systemrechte mit einem at-befehl erschleichen?


----------



## lolkind (11. Jan 2008)

Oh mann das Gesicht meiner Schwester hättet ihr sehen müssen als die ersten paar Programme gestartet sind und nach und nach wichtige Prozesse gekillt wurden ^^


----------



## Alex_winf01 (11. Jan 2008)

Jetzt weicht man von meinem Problem ab. Wäre VNC eine Lösung?


----------



## The_S (11. Jan 2008)

Was hat VNC (Remote auf einen anderen Rechner verbinden) mit deinem Problem zu tun?


----------



## Alex_winf01 (11. Jan 2008)

@ Hobbit_Im_Blutrausch

Hättest Du einen Lösungsansatz?


----------



## The_S (11. Jan 2008)

In der bat dan absoluten pfad setzen!?


----------



## Alex_winf01 (11. Jan 2008)

Schon ausprobiert - funktioniert nicht.

EDIT: Hab den falschen Befehl erwischt. CD Pfad wechselt ja nur in das entsprechende verzeichnis. Man sollte auch set Pfad = pfad setzen.

Werd ich nachher mal ausprobieren. Was anderes mache ich mit dem Joe ja auch nicht. Wenn es nicht funzt, melde ich mich noch mal. :wink:


----------



## Alex_winf01 (11. Jan 2008)

@ Hobbit_Im_Blutrausch

Auch mit dem Pfad setzen funktioniert es nicht.


----------



## The_S (11. Jan 2008)

nene, path odda so solltest du nicht setzen. CD sollte reichen. Bist du auch auf der richtigen Festplatte?

Sry, hab damit eigentlich keine Erfahrung, aber wenn du über die Netzwerkumgebung auf die Platte kommst, solltest du das auch ohne Probleme ausführen können (irgendwie  ).


----------



## Alex_winf01 (11. Jan 2008)

Das komische dabei ist ja, dass ich über den Editor Joe die Datei ausführen kann. Nur nicht über die .bat. Und eigentlich passiert da ja nix anderes. Der Joe ruft auch nur java Login auf, genauso wie die .bat.


----------



## Atze (11. Jan 2008)

schau dir das mal an, vielleicht hilft dir das

http://www.winfaq.de/faq_html/Content/tip1000/onlinefaq.php?h=tip1385.htm


----------



## The_S (11. Jan 2008)

OK, gerade mal getestet:

cmd greift natürlich auf den aktuellen Rechner zu => Er sucht bei dir auf der lokalen Festplatte nach dem File. Leider kannst du über cmd aber keine Class-Datei auf einem fremden PC ausführen, da cmd kein UNC unterstützt.

Mögliche Lösung wäre ein Netzlaufwerk.

Bzw. was willst du überhaupt machen (also mit welchem zweck, worauf greift die class-Datei zu, was spricht gegen ein JAR)?


----------



## Alex_winf01 (11. Jan 2008)

Ich habs einfach bei mir daheim ausprobiert, ob es möglich ist, eine Datei auf einem anderen Rechner auszuführen. OK, falscher Ansatz.

Hintergrund: Ich habe meine Applikation, die gerne beim Kunden irgendwo im Netzwerk hinlegen möchte (also auf einem Netzlaufwerk). Die Anwender rufen dann die Datei auf und können dann ihre jeweiligen Daten pflegen. Die entsprechende Datenbank liegt auf dem Server.

Außerdem habe ich das Problem noch mit dem Terminalserver. Da liegt die Applikation und die Datenbank auf dem Terminalserver -> Anwender melden sich auf dem Terminalserver an und startet die Applikation direkt auf dem Terminalserver.

Kann es

1) innerhalb eines Netzlaufwerkes oder
2) auf einem Terminalserver

Probleme mit meiner Applikation geben? Das wollte ich eigentlich damit nur testen. Was muss ich beim Terminalserver beachten? (Außer natürlich dass dann die DB mit localhost angesprochen werden muss).


----------



## The_S (11. Jan 2008)

Sollte keine Probleme geben. Warum .bat Datei, wenn es auch JARs gibt?


----------



## NTB (11. Jan 2008)

> CMD.EXE wurde mit \\Rechner A\G\Alex\Eigene Dateien als aktuellem Verzeichnis gestartet UNC-Pfade werden nicht unterstützt. Stattdessen wird das Windows-Verzeichnis als aktuelles Verzeichnis gesetzt.



Also vielleicht lese ich ja am Problem vorbei, aber da stehts doch! Du kannst CMD nicht mit Netzwerkpfaden starten.


----------



## HLX (11. Jan 2008)

Alex_winf01 hat gesagt.:
			
		

> Kann es
> 
> 1) innerhalb eines Netzlaufwerkes oder
> 
> ...



zu 1. Mounte einfach das Netzlaufwerk
zu 2. Sinnvollerweise wird die Anwendung aus einem Verzeichnis des angemeldeten Anwenders gestartet. Unter Windows stehen dir hierzu einige Umgebungsvariablen zur Verfügung, die du in der CMD-Datei verwenden kannst. Diese kannst du dir im CMD-Fenster über den Befehl 'set' anzeigen lassen.

Empfehlenswert ist die Variable:
%APPDATA% --> zeigt z.B. auf c:\dokumente und einstellungen\<benutzername>\Anwendungsdaten


----------



## Alex_winf01 (11. Jan 2008)

@ HLX

Die meisten Kunden, die das Programm nutzen, werden ein Windows-System nutzen. Wie muss ich da das Netzwerk-Laufwerk mounten?

Und mit dem Terminalserver läuft das wie folgt:

Ein Anwender meldet sich am Terminalserver an und führt das Programm direkt auf dem Terminalserver aus. Es liegt nicht direkt beim Anwender im Verzeichnis, da ja mehrere Anwender auf die Applikation zugreifen.


----------



## HLX (11. Jan 2008)

Alex_winf01 hat gesagt.:
			
		

> @ HLX
> 
> Die meisten Kunden, die das Programm nutzen, werden ein Windows-System nutzen. Wie muss ich da das Netzwerk-Laufwerk mounten?


Ich kenne das nur über den Windows-Explorer. Hier in der Menüleiste unter Extras -> Netzlaufwerk verbinden



			
				Alex_winf01 hat gesagt.:
			
		

> Und mit dem Terminalserver läuft das wie folgt:
> 
> Ein Anwender meldet sich am Terminalserver an und führt das Programm direkt auf dem Terminalserver aus. Es liegt nicht direkt beim Anwender im Verzeichnis, da ja mehrere Anwender auf die Applikation zugreifen.



Richtig. Aber der Terminalserver sollte auf seiner lokalen Festplatte ein Verzeichnis für jedem angemeldeten Benutzer eingerichtet haben. Von diesem Verzeichnis aus solltest du die Anwendung starten, damit jeder Benutzer das Programm in seinem eigenen Kontext startet. So besteht z.B. die Möglichkeit benutzerspezifische Einstellungen zu laden. Such mal nach dem Anmelden auf einem Windows-Server die Variable USERPROFILE bzw. das dazugehörige Anwendungsverzeichnis APPDATA. Wen diese wie gewünscht vorhanden sind, kannst du von dort aus das Programm über einen Verzeichniswechsel in der CMD-Datei starten.


----------

