So erstellen Sie eine batch-Datei, zum ausführen einer jar-Datei, die in jeder Lage des Systems
Habe ich eine MyFile.jar Datei. Ich brauche eine batch-Datei, sucht die jar-Datei und löst es.
Ich die folgende Lösung gefunden. Aber für diese batch-Datei und die jar-Datei muss im gleichen Ordner sein.
java -jar %~dp0MyFile.jar %*
Wir nicht wissen, wo der client Stelle jar-Datei in Ihrem system. Aber Sie werden batch-Datei im Autostart-Ordner.
Edit: ich habe es geschafft, dies zu schreiben batch-Datei für jetzt.
`ECHO
ECHO Locating the Jar
IF EXIST java -jar MyFile.jar ELSE (GOTO
SearchJar)
:SearchJar
SET the_path=D: & CD\
DIR /S/B File.jar > installer_location.txt
SET /P the_path=< installer_location.txt
if defined the_path goto :FoundIt
E: & CD\
DIR /S/B MyFile.jar > installer_location.txt
SET /P the_path=< installer_location.txt
if defined the_path goto :FoundIt
C: & CD\
DIR /S/B MyFile.jar > installer_location.txt
SET /P the_path=< installer_location.txt
if defined the_path goto :FoundIt
G: & CD\
DIR /S/B MyFile.jar > installer_location.txt
SET /P the_path=< installer_location.txt
if defined the_path goto :FoundIt
H: & CD\
DIR /S/B MyFile.jar > installer_location.txt
SET /P the_path=< installer_location.txt
if defined the_path goto :FoundIt
I: & CD\
DIR /S/B MyFile.jar > installer_location.txt
SET /P the_path=< installer_location.txt
if defined the_path goto :FoundIt
ECHO Jar not found.
:FoundIt
ECHO Jar file found at %the_path%
CALL java -jar %the_path%`
Dieser arbeitet jetzt in meinem system. Aber ich bin mir nicht sicher, ob es eine einfachere Möglichkeit, um zu überprüfen, alle Laufwerke auf einmal.
- Dies ist keine vernünftige Anfrage. Wenn Sie sind dass der client eine batch-Datei in Ihren Autostart-Ordner, warum nicht von Ihnen verlangen, um legen Sie die jar-Datei in Ihrem Ordner "startup" statt? Mit einer batch-Datei, müssen Sie wissen, wo die jar-Datei in der Datei-system, ob der durch eine Umgebungsvariable, oder von einem Datei-system-Suche (sehr langsam), oder indem es in einem bestimmten Ort. Die beste Praxis ist die Verwendung von Installations-software wie InstallShield.
- Wenn du die jar-Datei wo die batch-Datei ist der code, den Sie geschrieben wird funktionieren, weil
%~dp0
wird bewerten, in welchem Verzeichnis die batch-Datei liegt. Sie sollten setzen Sie es in doppelte Anführungszeichen, wenn:" %~dp0MyFile.jar"
im Fall das Verzeichnis Leerzeichen enthält. - Können wir nicht eine batch-Datei, sucht die jar-Datei im system und läuft es? wie ich bereits in meiner Frage, java-jar %~dp0MyFile.jar %* Recherchen für seine(batch-Datei) Lage und ändern Sie den Pfad zu der batch-Datei und führt die jar-Datei. Gibt es eine Möglichkeit, die wir machen können die batch-Datei Suche nach Glas jetzt?
- Dein code ist nicht ändern "den Pfad zur batch-Datei Lage". Es werden lediglich Anrufe
java.exe
mit einem vollständigen Pfad zu der jar-Datei. - Okay,habe es. Aber ich din nicht die Antwort, die ich Suche. Gibt es eine Möglichkeit, batch-Datei sucht nach jar-Datei und ruft java.exe mit einem vollständigen Pfad zu der jar-Datei?
- Sie sagen, Sie wissen nicht, wo der client legen Sie die jar-Datei. Ist der client wissen, wo der client legen Sie die jar-Datei? Ich schlage vor, das hinzufügen einer gui-file-chooser zu Ihrem Skript und der Benutzer aufgefordert, den Speicherort der jar-Datei. Sobald Sie es haben, speichern Sie den Ort mit der Registrierung, so können Sie abrufen auf den nachfolgenden ausgeführt wird. Wenn der reg-Schlüssel nicht vorhanden ist oder wenn der Wert weist auf eine fehlerhafte Lage, file-chooser wieder. Damit wird ein besseres Erlebnis für den Benutzer, vor allem, wenn der pc mehrere Festplatten und stellt das Glas auf d: oder e:. Eine Suche dauert zu lange.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Finden Sie zuerst die Datei und legen Sie eine variable auf den Pfad, dann verwenden Sie die variable als den Pfad, den Sie wollen. Die aus Ihrer Verwendung von %~dp0, ich nehme an, Sie arbeiten nur für windows, so das folgende Beispiel ist für windows
Gewarnt werden - die Suche könnte sehr lange dauern, z.B. wenn Sie suchen ein ganzes Laufwerk...
EDIT:
Antwort auf OPs Kommentare anfordern, ein script, das nach jedem Laufwerk auf dem system, hier ist es. Bitte beachten Sie - ich glaube nicht, dass die Nutzung dieser ist eine gute Idee für user-experience - es wird sehr ineffizient, und es könnte Jahre dauern... Getestet auf einem sehr einfachen Fall mit einem dummy-Glas auf einem Pfad, tritt früh in die Suche auf meinem Rechner. Hinweis - wenn der Benutzer wissen, auf welchem Laufwerk Sie das Glas auf, oder noch besser, der Weg ist, man könnte immer auffordern, geben Sie das Laufwerk /Pfad anstatt einer Schleife durch.
Als gknicker und ich sagte oben, das ist die Art, wie es getan werden sollte. Wenn Sie ein Installationsprogramm (wie NSIS oder ähnliches) zum bereitstellen der
.jar
Datei und.bat
script, habe den installer schreiben der registry-Wert, und eine-Suche oder Datei durchsuchen, die möglicherweise nie benötigt werden. Wenn die.jar
Datei verschoben nach der installation, ein pop-up - GUI-file-chooser und lassen Sie die Benutzer navigieren Sie zu der Position, die er gerettetMyFile.jar
. Speichern Sie die aktualisierte Lage der registry. Re-Eingabeaufforderung, wenn Sie die Datei erneut bewegt wird.Wenn Sie darauf bestehen, auf der Suche nach allen lokalen Laufwerken für
MyFile.jar
können Sie die Abfrage eines Laufwerks Liste mitwmic logicaldisk
. Ausschließen, Netzwerk-Laufwerke, die durch das hinzufügenwhere "not drivetype=4"
. Sollten Sie noch das Ergebnis speichern, um die Registrierung zu verhindern, dass ein von mehreren Minuten Verzögerung auf jedem Lauf.