【问题标题】:Batch listen for ping to shutdown批量监听 ping 关机
【发布时间】:2014-11-12 19:06:50
【问题描述】:

我正在尝试制作一个批处理文件,该文件正在等待来自网络的某个 ip 的 6 个数据包 ping。当机器收到 6 个回显请求时,应该会自动关闭。我会让这个批处理文件在启动时作为服务运行,这部分我不需要帮助。有人可以帮我听听吗?

【问题讨论】:

  • 我脑海中浮现几个问题:数据包到达需要多长时间是否重要?安全性有多重要(IP 可以伪造)?为什么是 ping 而不是更安全的方式?
  • 大约 10 秒。我不在乎安全。我只想用 6 个回显请求关闭那台机器。
  • AFAIK,CMD 无法以您描述的方式访问网络堆栈。 PowerShell 4.0 可能有,但不是小事。

标签: batch-file ping shutdown packets listen


【解决方案1】:

作为替代方案,为什么不在“侦听”脚本不断寻找的特殊位置(甚至可能包含特殊内容)创建一个文件,并在它存在后立即删除该文件并关闭机器?

这至少可以分批完成。

SETLOCAL
SET "HANDSHAKE=%WINDIR%\System32\SPECIAL\SHUTDOWN_NOW"
:LOOP
IF EXIST "%HANDSHAKE%" (
    DEL /Q "%HANDSHAKE%"
    shutdown -s -f -t 0
)
PowerShell -NoProfile -Command "Sleep(60);"
GOTO :LOOP

Windows 没有本机睡眠命令。其他人认为比 PowerShell 开销更少的替代策略(不过,由于它只是在休眠,开销可能无关紧要)是 ping localhost 适配器时间(例如ping -n 60 127.0.0.1)。

当然,整个脚本可以用 PowerShell 编写,但是你必须摆弄 ExecutionPolicy 和其他东西。

【讨论】:

    猜你喜欢
    • 2016-08-24
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多