2008-11-18 16 views
8

J'essaie de lire une valeur dans un fichier et de l'utiliser dans une commande ultérieure.Lecture d'une valeur à partir d'un fichier dans un script batch Windows

J'ai un fichier appelé AppServer.pid qui contient l'identifiant de processus de mon serveur d'application (juste le numéro, ce n'est pas un fichier de propriétés ou quelque chose comme ça). Le serveur de l'application est suspendu, donc je veux prendre cette valeur et la passer à la commande kill. Donc, mon script sera quelque chose comme

SET VALUE_FROM_FILE=AppServer.pid # or something 
taskkill /pid %VALUE_FROM_FILE% /f 

Y at-il un moyen pratique de faire cela dans les scripts Windows?

Répondre

12

Cela fonctionne:

SET /P VALUE_FROM_FILE= < AppServer.pid 
taskkill /pid %VALUE_FROM_FILE% /f 

Le paramètre/P utilisé avec SET vous permet de définir la valeur d'un paramètre à l'aide d'entrée de l'utilisateur (ou dans ce cas, l'entrée d'un fichier)

+0

Merci. C'est probablement la solution la plus simple. –

+0

si vous le lancez plusieurs fois, il prendrait la valeur précédente mais pas celle en cours. Ça fonctionne comme ça pour moi. – ses

2
for /f %%G in (appid.txt) do (SET PID=%%G) 
echo %PID% 
taskkill etc here... 

Cela pourrait aider!

1

Si vous connaissez le nom du processus, renvoyé par la commande tasklist, vous pouvez exécuter taskkill avec un filtre sur le nom du processus, par exemple /FI IMAGENAME eq %process_name%.

Par exemple, pour tuer tous les processus nommés nginx.exe terme:

taskkill /F /FI "IMAGENAME eq nginx.exe" 

qui « lit en anglais »: tuer toutes les tâches (avec force si nécessaire via /F) qui correspondent au filtre /FI « imagename est égal à nginx .EXE".