2017-06-20 3 views
2

J'utilise le code ci-dessous pour supprimer le programme en utilisant le port 8080, mais j'ai l'erreur | was unexpected at this time., que puis-je faire?Erreur "| était inattendu en ce moment."

FOR /F "tokens=5 delims= " %P IN ('netstat -a -n -o | findstr :8080') DO TaskKill.exe /PID %P 

Répondre

5

La condition à l'intérieur du for doit être analysé par l'analyseur de lot avant de pouvoir passer à la clause IN() sous la forme d'une commande exécutable. Pour conserver des caractères spéciaux comme <,>, &, |,^ou%, vous devez leur échapper dans le script. Le caractère d'échappement dans Batch est "^".

Évadez la barre verticale avec un caret:

FOR /F "tokens=5 delims= " %P IN ('netstat -a -n -o ^| findstr :8080') DO TaskKill.exe /PID %P 

Je pourrais aussi ajouter que lors de l'enregistrement en tant que .bat, les caractères pour cent doivent être échappé aussi bien. Au lieu de "% P", vous devrez utiliser "%% P".

+3

Ce serait une bien meilleure réponse si vous deviez [éditer] et expliquer * pourquoi * l'affiche devrait le faire. Ce serait une réponse éducative qui bénéficierait non seulement au demandeur de cette question, mais à d'autres qui le verront à l'avenir. * Faites ceci * ne fournit aucune information sur les raisons pour lesquelles il est nécessaire de le faire. –

+0

Merci beaucoup! – mikezang

+0

Beaucoup mieux répondre. :-) –