J'écris une petite application Java et j'ai des problèmes avec un fichier FilePath. P>
Je veux exécuter un fichier de commandes avec p>
Mais maintenant, Java pleure à cause de la blancheur dans le fichier FilePath. P>
Comment puis-je m'échapper? P>
EDIT: P>
OK, merci pour les réponses les gars.
Mais je viens de courir dans un nouveau problème: p>
Si je commence le .bat de cette façon, cela ouvre simplement une fenêtre CMD et rien ne se passe. Mais si je déplace le .bat en C: / Dossier / sans espaces, cela fonctionne ... La .bat elle-même est bien aussi. P> runtime.getruntime (). EXED ("CMD / C Démarrer c: \ Program Files \ Filed \ File.bat"); Code> P>
8 Réponses :
Je pense que cela pleure à cause de la back non évaluée slash dans votre chaîne. Citez le nom du fichier. P>
mettre des citations autour et citer les backslashes:
Cela n'a fonctionné que pour Windows, comment pourrions-nous franchir les trois plateformes sur MacOS, Ubuntu, Windows?
entourez le filépath avec et d'échapper correctement au " code>
\ code> dans le chemin aussi p> p >
Runtime.getRuntime().exec("cmd /c start \"c:/program files/folder/file.bat\""); should work
Vous pouvez éviter tout problème comme celui-ci en utilisant le runtime # exécuté qui prend une chaîne []: de cette façon de ne pas avoir à craindre de cibler les noms de fichiers. Cependant, vous devez toujours vous soucier de cibler \ dans les noms de fichiers. P> p>
Au lieu d'utiliser Runtime.GetRuntime, il est préférable d'utiliser ProcessBuilder
De cette façon, vous pouvez avoir quelque chose comme: p>
Vous devez échapper aux barres obliques de sorte que \\ code> et dans l'espace blanc Windows sont échappées avec
% 20 code>. Je ne sais pas sur d'autres systèmes, pourrait travailler. Mais la première chose fait le
\\ code>. P>
Une solution pour Windows 7 au moins:
Runtime.getRuntime().exec("my_program_name.exe \"" + namefile+"\");
Dupliqué possible de Comment exécuter la commande avec les paramètres?