FIND:管道ping命令时参数格式不正确

时间:2020-07-27 07:03:05

标签: batch-file cmd find cygwin

我正在尝试将ping测试的响应发送到json文件。

set RESPONSE=$(ping %IPADDRESS% -n 1 | find "time=")
echo %RESPONSE% >> results.json 

当我尝试ping%IPADDRESS%-n 1 |直接在cmd提示符下找到“ time =“,即可正常工作。但是当我在脚本中运行它时,出现以下错误:

FIND: Parameter format not correct

有人知道为什么吗?非常感谢。

3 个答案:

答案 0 :(得分:0)

由于Mark的使用建议,我得以绕过此问题。

FOR /F "skip=7 tokens=9" %%G IN ('ping %IPADDRESS% -n 1') DO set REPONSE=%%G
echo "reponse time": "%REPONSE%", >>  results.json

为我做了。 (虽然我很确定这是不好的编码,但是我正在使用单词的位置,所以如果ping命令的输出发生变化,我的代码就会停止工作。)

答案 1 :(得分:0)

除非我误解了您的问题,否则我有一种感觉,您实际上是希望您的results.json保留行$(ping %IPADDRESS% -n 1 | find "time=")显然将%IPADDRESS%扩展到其值。为此,最好建议您使用延迟扩展,例如:

Set "RESPONSE=$(ping %IPADDRESS% -n 1 | find "time=")"
SetLocal EnableDelayedExpansion
(Echo !RESPONSE!) 1>> "results.json" 
EndLocal

答案 2 :(得分:0)

获取JSON文件的另一种方法是:

incorrect number of dimensions

这将产生:

powershell -NoLogo -NoProfile -Command ^
    "Test-Connection -ComputerName localhost -Count 1 |" ^
        "Select-Object -Property ResponseTime |" ^
        "ConvertTo-Json |" ^
        "Out-File -FilePath 'C:\src\t\results.json' -Encoding ascii"

如果系统正在运行pwsh,则可以使用以下内容。

{
    "ResponseTime":  0
}