2008-11-18 2 views
8

Ich versuche, einen Wert aus einer Datei zu lesen und in einem nachfolgenden Befehl zu verwenden.Lesen eines Wertes aus einer Datei in einem Windows-Stapel-Skript

Ich habe eine Datei namens AppServer.pid, die die Prozess-ID meines App-Servers enthält (nur die Nummer, es ist keine Eigenschaftendatei oder ähnliches).

Der App-Server hängt, also möchte ich diesen Wert übernehmen und an den Befehl kill übergeben. Also mein Skript wird so etwas wie

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

Gibt es eine bequeme Möglichkeit, dies in Windows-Scripting zu tun?

Antwort

12

Dies funktioniert:

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

Die/P-Parameter mit SET verwendet können Sie den Wert eines Parameters setzen von dem Benutzer über den Eingang (oder in diesem Fall Eingabe aus einer Datei)

+0

Danke. Dies ist wahrscheinlich die einfachere Lösung. –

+0

Wenn Sie es mehrmals starten, würde es vorherigen Wert aber nicht aktuellen nehmen. So funktioniert es für mich. – ses

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

Dies könnte helfen!

1

Wenn Sie den Namen des Prozesses kennen, wie er vom Befehl tasklist zurückgegeben wurde, können Sie taskkill mit einem Filter für den Prozessnamen ausführen, z. B. /FI IMAGENAME eq %process_name%.

Zum Beispiel alle Prozesse genannt zu töten nginx.exe Lauf:

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

Welche „auf Englisch liest“: alle Aufgaben töten (mit Nachdruck erforderlich, wenn über /F), die den Filter /FI „Imagename übereinstimmen gleich nginx .exe ".

Verwandte Themen