2008-11-18 18 views
8

Estoy tratando de leer un valor de un archivo y usarlo en un comando posterior.Lectura de un valor de un archivo en un script de lote de Windows

Tengo un archivo llamado AppServer.pid que contiene la identificación del proceso de mi servidor de aplicaciones (solo el número, no es un archivo de propiedades ni nada de eso).

El servidor de aplicaciones está colgado, por lo que quiero tomar este valor y pasarlo al comando kill. Así que mi script será algo así como

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

¿Hay una manera conveniente de hacer esto en Windows scripting?

Respuesta

12

Esto funciona:

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

El parámetro/P utilizado con SET le permite establecer el valor de un parámetro mediante la entrada del usuario (o en este caso, la entrada desde un archivo)

+0

Gracias. Esta es probablemente la solución más directa. –

+0

si lo ejecuta varias veces, tomaría valor anterior pero no el actual. Que como funciona para mi – ses

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

Esto podría ayudar!

1

Si conoce el nombre del proceso, como se devuelve desde el comando tasklist, puede ejecutar taskkill con un filtro en el nombre del proceso, es decir, /FI IMAGENAME eq %process_name%.

Por ejemplo, para matar todos los procesos nombrados nginx.exe de ejecución:

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

Qué "se lee en Inglés": matar a todas las tareas (la fuerza si es necesario a través de /F) que coinciden con el filtro /FI "ImageName es igual a nginx .exe".

Cuestiones relacionadas