【问题标题】:Error "| was unexpected at this time."错误“|此时是意外的。”
【发布时间】:2017-11-22 08:03:22
【问题描述】:
我正在使用以下代码删除使用端口 8080 的程序,但出现错误| was unexpected at this time.,我该怎么办?
FOR /F "tokens=5 delims= " %P IN ('netstat -a -n -o | findstr :8080') DO TaskKill.exe /PID %P
【问题讨论】:
标签:
batch-file
for-loop
findstr
netstat
taskkill
【解决方案1】:
for 中的条件必须先由批处理解析器解析,然后才能将其作为可执行命令传递给 IN() 子句。要保留 、&、|、^ 或 % 等特殊字符,您必须在脚本中对它们进行转义。 Batch 中的转义字符是“^”。
用插入符号转义竖线:
FOR /F "tokens=5 delims= " %P IN ('netstat -a -n -o ^| findstr :8080') DO TaskKill.exe /PID %P
我还可以补充一点,当保存为 .bat 时,百分比字符也必须转义。您需要使用“%%P”而不是“%P”。
【讨论】:
-
如果你要edit 并解释为什么发帖人应该这样做,这将是一个更好的答案。这将是一个具有教育意义的答案,不仅有益于提出这个问题的人,也有益于未来看到它的其他人。 这样做没有提供任何关于为什么必须这样做的信息。
-