Comment créer un fichier de commandes pour exécuter un fichier jar dans n'importe quel endroit du système
J'ai un MyFile.jar fichier. J'ai besoin d'un fichier de commandes qui recherche le fichier jar et la déclenche.
J'ai trouvé la solution suivante. Mais pour que le fichier de commandes et jar fichier doit être dans le même dossier.
java -jar %~dp0MyFile.jar %*
Nous ne savons pas où le client va placer le fichier jar dans leur système. Mais ils vont mettre fichier de commandes dans le dossier de démarrage.
Edit: j'ai réussi à écrire ce fichier de commandes pour l'instant.
`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%`
C'est de travailler dans mon système. Mais je ne sais pas si il y aura un moyen simple de vérifier tous les disques à la fois.
- Ce n'est pas une demande raisonnable. Si vous êtes exigeant le client de faire un fichier batch dans leur dossier de démarrage, pourquoi ne pas les obliger à placer le fichier jar dans leur dossier de démarrage à la place? Avec un fichier de commandes, vous devez savoir où le fichier jar est situé dans le système de fichiers, que ce soit par une variable d'environnement, ou par un système de fichiers de recherche (très lent), ou en l'obligeant à être dans un endroit précis. La meilleure pratique consiste à utiliser l'installation d'un logiciel comme InstallShield.
- Si vous placez le fichier jar où le fichier de commandes, le code que vous avez posté marchera car
%~dp0
permettra d'évaluer à tout autre répertoire que le fichier de commandes est en. Vous devez le mettre entre guillemets doubles si:" %~dp0MyFile.jar"
dans le cas où le répertoire contient des espaces. - Ne peut-on pas faire un fichier batch qui recherche le fichier jar dans le système et l'exécute? comme je l'ai mentionné dans ma question, java-jar %~dp0MyFile.jar %* à la recherche de son(fichier batch) de l'emplacement et de modifier le chemin d'accès vers le fichier de commandes emplacement et exécute le fichier jar. Est-il une manière que nous pouvons faire le fichier de commandes recheche jar maintenant?
- Votre code ne pas modifier "le chemin vers le fichier de commandes de l'emplacement". Il appelle simplement
java.exe
avec un chemin d'accès complet vers le fichier jar. - Bon,l'a obtenu. Mais Encore, je din obtenez pas la réponse, je suis à la recherche d'. Est-il un moyen, de lot, de la recherche de fichiers pour fichier jar et appels java.exe avec un chemin d'accès complet vers le fichier jar?
- Vous dites que vous ne savez pas où le client va placer le fichier jar. Le client ne peut savoir où le client va placer le fichier jar? Je propose l'ajout d'une interface graphique sélecteur de fichier pour votre script, et invitant l'utilisateur à l'emplacement du fichier jar. Une fois que vous avez cela, enregistrez-le dans le registre de sorte que vous pouvez récupérer sur d'autres pistes. Si la clé de registre n'existe pas ou si sa valeur en points d'une erreur de localisation, sélecteur de fichier de nouveau. Il en résultera une meilleure expérience pour l'utilisateur, surtout si le pc possède plusieurs lecteurs et met le pot sur d: ou e:. Une recherche peut prendre trop de temps.
Vous devez vous connecter pour publier un commentaire.
D'abord trouver le fichier et de définir une variable de son chemin d'accès, puis utiliser cette variable comme le chemin que vous voulez. De votre utilisation de %~dp0, je suppose que vous travaillez sur windows, donc l'exemple suivant est pour windows
Être averti - la recherche peut prendre un temps assez long par exemple, si vous recherchez un disque entier...
EDIT:
En réponse à l'OPs commentaires demandant un script qui va chercher n'importe quel lecteur sur le système, c'est ici. Veuillez noter que je ne pense pas que l'utilisation de ce est une bonne idée pour l'expérience utilisateur, il sera très inefficace, et il pourrait prendre des heures... Testé sur un cas très simple avec un mannequin pot sur un chemin qui se produit au début de la recherche sur ma machine. Remarque - si l'utilisateur a à savoir à quel lecteur le pot est sur, ou mieux encore le chemin, vous pouvez toujours demander à entrer que le lecteur /chemin d'accès au lieu de boucle à travers.
Comme gknicker et j'ai fait remarquer ci-dessus, c'est la façon dont il devrait être fait. Si vous avez utilisé un programme d'installation (comme NSIS ou similaire) pour déployer le
.jar
fichier et.bat
script, ont le programme d'installation d'écrire la valeur de registre, et une recherche ou parcourir fichier ne peut jamais être nécessaire. Si le.jar
fichier est déplacé après l'installation, une fenêtre de GUI sélecteur de fichier et permettre à l'utilisateur de naviguer vers l'emplacement qu'il a sauvéMyFile.jar
. Enregistrer l'emplacement mis à jour dans le registre. Re-invite, si le fichier est déplacé de nouveau.Si vous insistez sur la recherche de tous les lecteurs locaux
MyFile.jar
, vous pouvez interroger un lecteur liste avecwmic logicaldisk
. Exclure les lecteurs réseau par l'ajout dewhere "not drivetype=4"
. Vous devez toujours enregistrer le résultat dans le registre, afin d'éviter un plusieurs minutes de retard sur chaque course.