2010-09-29 4 views
4

Hier, j'ai demandé cette post, mais j'ai toujours des problèmes lorsque j'essaie d'exécuter ce fichier .bat à partir de mon projet java.Comment obtenir le paramètre dans un fichier .bat à partir d'un projet java

@echo off 
set filename=%1 
echo %filename | sed 's/\([A-Z]\)/ \1/g'; 

L'appel que je fais est:

String param = "myparam"; 
ProcessBuilder pb = new ProcessBuilder("myFile.bat", param); 

Mais ce myFile.bat fait est juste imprimer %filename, il ne prend pas la valeur réelle de l'param j'envoie.
Qu'est-ce que je fais mal? Merci à l'avance

J'ai aussi essayé

@echo off 
set filename=%1 
echo %filename% | sed 's/\([A-Z]\)/ \1/g'; 

Avec le même résultat, maintenant il imprime %filename%.

Peut-être quelques problèmes dans l'appel ??

Répondre

1

Vous devrez probablement exécuter cmd.exe /c script.bat à la place, de sorte que cmd.exe (le shell de commande) développera les variables. Dans Windows, les fichiers .bat ne sont pas des exécutables complets, il suffit d'entrer des fichiers pour le processeur de commande (cmd.exe).

+0

Je reçois cette erreur dans ma console eclipse: Impossible d'exécuter le programme "cmd/c myscript.bat" (dans le répertoire "mydirectory"): erreur = 2, aucun fichier ou répertoire de ce type. Mais bien sûr, myscript.bat est dans ce répertoire –

+0

essayez de diviser la commande en plusieurs chaînes: '(" cmd.exe ","/c "," script.bat ")' – Grodriguez

+0

merci! était-ce. –

1

vous avez manqué le deuxième %. Devrait être:

echo %filename% | sed 's/\([A-Z]\)/ \1/g';

+0

Je l'ai essayé. le même résultat, mais maintenant il imprime% filename% –

+0

courez-vous le fichier bat à une invite de Windows cmd? – dogbane

1

%filename manque un % à la fin. Il devrait être: %filename%

Questions connexes