【问题标题】:CMD Command only works when entered manually but not when used in fileCMD 命令仅在手动输入时有效,但在文件中使用时无效
【发布时间】:2022-01-02 15:40:30
【问题描述】:

我想用 ping -n 1 8.8.8.8 | findstr /r /c:"[0-9] *ms" 在继续我的代码之前检查是否可以连接互联网。但是在文件中使用时它不起作用。

当我在新的命令提示符中手动输入此命令时,它会按预期工作。当它在文件中使用时,它会“有点卡”在这一行并且什么都不做,就好像它会等待永远不会发生的事情一样。关于这个问题是什么和/或如何解决它的任何想法?谢谢

【问题讨论】:

  • .bat 和 .cmd,两者都进行了测试。两者都具有相同的结果:看似“等待”并且没有进展
  • 我创建了一个单独的文件只是为了测试它并排除其他东西:在这个文件中只有 ping 命令后跟一个“暂停”。但由于我看不到“按任意键继续”提示,我认为这不是问题
  • 分别称为test.bat和test.cmd
  • 我看不出那条线有什么问题。该目录中是否有任何名为 ping 的文件?我建议你把你的脚本改成这样:ping.exe -n 1 8.8.8.8 | findstr /r /c:"[0-9] *ms" 强制它使用ping.exe
  • 此外,findstr 也会给您带来麻烦。我会使用命令的错误级别而不是ping.exe -n 1 8.8.8.8 2>&1 >nul && echo Success || echo Oops

标签: batch-file cmd


【解决方案1】:

对于这项任务,我建议您 的第一行如下所示:

@%SystemRoot%\System32\ping.exe -n 1 8.8.8.8 1>NUL || GoTo :EOF

如果ping 命令行不成功,这应该在第一行结束脚本。

您可能还需要考虑使用超时功能。如果您打开命令提示符窗口,键入ping /? 并按ENTER 键,您应该注意它有一个-w 选项,它将接受以毫秒为单位的参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 2021-05-06
    相关资源
    最近更新 更多