Dans Windows, ce qui peut regarder pour le port 8080 et d'essayer de tuer le processus, il est utilisé par un .Fichier BAT?
Réponses
Trop de publicités?Voici une commande pour vous aider à démarrer:
FOR /F "tokens=4 delims= " %%P IN ('netstat -a -n -o ^| findstr :8080') DO @ECHO TaskKill.exe /PID %%P
Lorsque vous êtes confiant dans votre fichier de commandes, retirez - @ECHO
.
FOR /F "tokens=4 delims= " %%P IN ('netstat -a -n -o ^| findstr :8080') DO TaskKill.exe /PID %%P
Notez que vous devrez peut-être modifier un peu pour les différents OS. Par exemple, sur Windows 7, vous pourriez avoir besoin d' tokens=5
au lieu de tokens=4
.
Comment cela fonctionne
FOR /F ... %variable IN ('command') DO otherCommand %variable...
Cela vous permet d'exécuter command
, et la boucle de sa sortie. Chaque ligne sera en peluche en %variable
, et peut être étendue en otherCommand
autant de fois que vous le souhaitez, où vous le souhaitez. %variable
dans l'utilisation réelle ne peut avoir qu'un seul nom de la lettre, par exemple, %V
.
"tokens=4 delims= "
Cela vous permet de diviser chaque ligne par des espaces, et prendre la 4ème morceau dans cette ligne, et le fourre dans %variable
(dans notre cas, %%P
). delims
semble vide, mais que l'espace supplémentaire est réellement important.
netstat -a -n -o
Il suffit de lancer et de trouver. Selon l'aide en ligne de commande, il "Affiche toutes les connexions et les ports d'écoute.", "Affiche les adresses et les numéros de port sous forme numérique.", et "Affiche le propriétaire de l'ID de processus associé à chaque connexion.". J'ai simplement utilisé ces options depuis quelqu'un d'autre l'a suggéré, et il est arrivé de travailler :)
^|
Cela prend la sortie de la première commande ou d'un programme (netstat
) et les transmet sur un deuxième programme de commande (findstr
). Si vous avez été en utilisant ce directement sur la ligne de commande, au lieu d'à l'intérieur d'une chaîne de commande, vous devez utiliser |
au lieu de ^|
.
findstr :8080
Ce filtre de sortie qui est passé en elle, en ne retournant que les lignes qui contiennent :8080
.
TaskKill.exe /PID <value>
Cela tue une tâche en cours d'exécution, à l'aide de l'ID de processus.
%%P instead of %P
Cela est nécessaire dans des fichiers batch. Si vous avez fait ceci dans l'invite de commande, vous devez utiliser %P
à la place.
À l'aide de Merlyn la solution causé d'autres applications à être tué, comme firefox. Ces processus ont été en utilisant le même port, mais pas en tant qu'auditeur:
par exemple:
netstat -a -n -o | findstr :8085
TCP 0.0.0.0:8085 0.0.0.0:0 LISTENING 6568
TCP 127.0.0.1:49616 127.0.0.1:8085 TIME_WAIT 0
TCP 127.0.0.1:49618 127.0.0.1:8085 TIME_WAIT 0
Par conséquent, peuvent exclus en ajoutant "à l'ÉCOUTE" à la findstr comme suit:
FOR /F "tokens=5 delims= " %%P IN ('netstat -a -n -o ^| findstr :8085.*LISTENING') DO TaskKill.exe /PID %%P
Merci à vous tous, juste pour ajouter que certains processus de l'habitude de fermer à moins que le /F commutateur force est également envoyer avec TaskKill. Aussi avec le commutateur /T, tous les threads du processus sera fermé.
C:\>FOR /F "tokens=5 delims= " %P IN ('netstat -a -n -o ^| findstr :2002') DO TaskKill.exe /PID %P /T /F
Pour les services, il sera nécessaire d'obtenir le nom du service et de l'exécuter:
sc stop ServiceName
Regarder ce processus est à l'écoute du port: Comment pouvez-vous savoir quel processus est à l'écoute sur un port sur Windows?
Le tuer: de Toute façon d'écrire une Windows .le fichier bat pour tuer les processus?
Juste pour la fin:
Je voulais tuer tous les processus connecté à un port spécifique, mais pas le processus d'écoute
la commande (cmd shell) pour le port 9001 est:
FOR /F "tokens=5 delims= " %P IN ('netstat -ano ^| findstr -rc:":9001[ ]*ESTA"') DO TaskKill /F /PID %P
findstr:
- r est pour les expressions et c exacte de la chaîne de match.
- [ ]* pour la mise en correspondance des espaces
netstat:
- -> tous les
- n -> ne pas résoudre (plus rapide)
- o -> pid
Cela fonctionne parce que netstat affiche la source port, puis le port de destination et ensuite ÉTABLI