错误"|此时出乎意料."

mik*_*ang 2 netstat for-loop batch-file taskkill findstr

我使用下面的代码使用端口8080删除程序,但我收到错误| was unexpected at this time.,我该怎么办?

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

Reg*_*jok 5

for必须由批处理解析器解析其中的条件,然后才能将其作为可执行命令传递给IN()子句.要保留<,>,&,|,^或%等特殊字符,必须在脚本中转义它们.Batch中的转义字符为"^".

用插入符号逃离垂直条:

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

我还可以补充说,当保存为.bat时,百分比字符也必须进行转义.而不是"%P",您需要使用"%% P".

  • 如果您要[编辑]并解释*为什么*海报应该这样做,这将是一个更好的答案.这将是一个教育性的答案,不仅有益于这个问题的提问者,也有利于将来看到它的其他人.*此*不提供有关为何需要这样做的任何信息. (3认同)