下面是我当前用来通过 LAN 网络关闭远程计算机的批处理文件命令。
它的作用如下。
- 我已经在名为的文本文件中指定了远程计算机的 IP 地址列表.txt
- 我已经添加了一个 IP 作为0.0.0.0位于所有远程计算机 IP 的底部。
- 下面的批处理文件将检查计算机是否可通过 LAN 访问。
- 如果计算机可用,它将关闭远程电脑,否则它将传递给下一个 IP。
- 当批处理文件读取0.0.0.0最后它将自动关闭主计算机。
我的问题是我无法为超过 7 台远程计算机运行此批处理。如果我在列表.txt批处理文件挂起,操作未完成。请告诉我我是否在代码中犯了任何错误,或者我该如何修复此问题。
我想至少为 12 台远程 PC 运行此批处理文件
@echo off
setlocal enableextensions enabledelayedexpansion
for /f %%a in (C:\Users\calcopm\Desktop\list.txt) do (
SET IP =%%a
SET C=0
IF %%a equ 0.0.0.0 (
shutdown /s
) ELSE (
ping -n 1 %%a | find "TTL=" >NUL: && SET C=1
IF !C! equ 1 (
psshutdown \\%%a
) else (
ECHO REMOTE %%a IS NOT REACHABLE
)
)
)
答案1
在检查一台机器和另一台机器的状态之间引入延迟计时器可以解决这个问题。
希望,找到机器在线状态并传递关机命令可能在几分之一秒内运行,而在更短的时间内跳转到下一台机器可能会导致问题。因此,建议您在 IF & ELSE 循环中引入时间延迟并继续进行。
答案2
我按如下方式更改了脚本,并使用应用程序将 BAT 转换为 EXE
@echo off
setlocal enableextensions enabledelayedexpansion
for /f %%a in (C:\Users\calcopm\Desktop\list.txt) do (
IF %%a equ 0.0.0.0 (
shutdown /s
) ELSE (
ping -n 1 -w 100
IF errorlevel 1 (
ECHO REMOTE %%a IS NOT REACHABLE
) else (
psshutdown \\%%a
)
)
)
我仍然面临同样的问题。当我使用 exe 文件(使用 BAT 转换为 EXE)运行脚本时,我使用 BAT 文件执行时一切正常。然后我意识到 BAT 到 EXE 转换器存在一些问题,这反过来又影响了 EXE 文件。
然后我使用不同的应用程序将 BAt 转换为 EXE,并且它运行得非常好。
我终于解决了这个问题!!!!!!!!!唷!!!