79 votes

Création d'un fichier BAT pour script python

Comment puis-je créer un simple fichier BAT qui exécutera mon script python situé à C:\somescript.py?

77voto

MK. Points 11889
c:\python27\python.exe c:\somescript.py %*

2 votes

Salut MK - Lorsque j'ouvre le Bloc-notes, colle ta ligne là-bas et enregistre-la, puis essaie de l'exécuter à travers le planificateur de tâches de Windows, la fenêtre de la ligne de commande s'ouvre pendant une fraction de seconde puis se ferme. Je ne vois pas de dossier python27 dans C:\, est-ce un problème ?

0 votes

Au cas où cela pourrait aider, j'utilise Windows Server 2003 SP2 dans un environnement 64 bits

6 votes

Eh bien, vous devez d'abord installer python. Rendez-vous sur www.python.org et téléchargez la version 2.7

72voto

Hugh Bothwell Points 22635

Ouvrez une ligne de commande (⊞ Win+R, cmd, ↵ Entrée) et tapez python -V, ↵ Entrée.

Vous devriez recevoir une réponse, quelque chose comme Python 2.7.1.

Si ce n'est pas le cas, vous n'avez peut-être pas Python installé. Corrigez cela en premier lieu.

Une fois que vous avez installé Python, votre fichier batch devrait ressembler à

@echo off
python c:\somescript.py %*
pause

Cela permettra de garder la fenêtre de commande ouverte après que le script se termine, pour que vous puissiez voir les erreurs ou messages. Une fois que vous êtes satisfait, vous pouvez supprimer la ligne 'pause' et la fenêtre de commande se fermera automatiquement à la fin.

9 votes

Merci, mais que signifient @echo off et %* ?

3 votes

@the_prole pour @echo off jetez un coup d'œil à -> technet.microsoft.com/fr-fr/library/… et %* peut prendre n'importe quel nombre d'arguments.

2 votes

Bonjour. Cette réponse est incorrecte. Comment savez-vous que le chemin de Python est ajouté aux variables d'environnement? Cela ne fonctionnera pas s'il ne l'est pas.

21voto

npocmaka Points 7794

Voici comment vous pouvez mettre à la fois un code de batch et un code python dans un seul fichier :

0<0# : ^
''' 
@echo off
echo code de batch
python "%~f0" %*
exit /b 0
'''

print("code python")

les ''' démarre et termine respectivement les commentaires multi-lignes en python.

0<0# : ^ est plus intéressant - en raison de la priorité de redirection en batch, il sera interprété comme :0<0# ^ par le script batch qui est une étiquette dont l'exécution ne sera pas affichée à l'écran. Le chapeau à la fin permettra d'échapper à la nouvelle ligne et la deuxième ligne sera attachée à la première. Pour python, ce sera l'instruction 0<0 et le début d'un commentaire en ligne.

Le crédit revient à siberia-man

1 votes

%~f0 devrait être entre guillemets : "%~f0", sinon le chemin avec des espaces ou d'autres symboles spéciaux ne sera pas traité. Pour le vérifier, renommez ce fichier "Mon premier script.bat" ou placez-le dans le dossier "c:\Mes scripts".

1 votes

Le noir s'autoformate en 0 < 0 # : ^ (donnant Le système ne peut pas trouver le fichier spécifié.) sinon belle astuce!

1 votes

@tejasvi88 y a-t-il des symboles après le ^? Il doit être le dernier symbole de la ligne. Je viens de vérifier et cela fonctionne toujours.

14voto

sven tan Points 149

Il suffit d'ouvrir un fichier batch contenant ces deux lignes dans le même dossier que votre script python :

somescript.py
pause

1 votes

Est-il possible de donner l'ensemble du code, au lieu du nom du fichier ??

0 votes

@RachitGupta somescript.py dans l'exemple ci-dessus est le nom de fichier du script python que vous souhaitez lancer

0 votes

@C'estunpiege Oui, consultez les réponses de npocmaka, de Hans Ginzel, de Michael Villani et probablement d'autres, sur cette page.

6voto

Chris Farr Points 836

Si vous avez ajouté Python à votre PATH, vous pouvez également simplement l'exécuter de cette manière.

python somescript.py

0 votes

Oui, c'est facile, mais pas idéal si vous avez plusieurs installations Python (par exemple 2.7 et 3.6). De plus, Python est presque toujours ajouté au chemin d'accès, donc je ne pense pas que ce soit trop problématique.

2 votes

Une option pour cela est de faire une copie dans chacune de vos versions de Python de l'exe et de renommer quelque chose d'unique. python2.7.exe, python3.6.exe etc. Ensuite, dans la ligne de commande, vous pouvez l'appeler comme python3.6 somescript.py

2 votes

Oui terriblement évident vraiment mais efficace (pourquoi n'y ai-je pas pensé ?). De plus, je pense que 36 serait mieux que 3,6 et 27 pour 2,7, le point pourrait causer de la confusion.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X