You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写脚本实现备份完成且指定文件不存在时关闭多台机器?

可以实现,以下是批处理和PowerShell两种脚本方案

批处理脚本方案

适用于习惯CMD环境的场景,逻辑是先检查指定文件是否不存在,再批量触发远程关机:

@echo off
:: 配置参数
set "TARGET_FILE=C:\your\actual\path\swmw.obj"
set "MACHINES=PC-01 192.168.1.100 Server02"  :: 替换为目标机器名/IP,空格分隔

:: 检查文件是否不存在
if not exist "%TARGET_FILE%" (
    echo [INFO] 指定文件不存在,开始执行远程关机...
    for %%m in (%MACHINES%) do (
        echo [PROCESS] 正在关闭 %%m
        shutdown /s /m \\%%m /t 60 /c "备份完成且指定文件已清理,自动关机" /f
    )
) else (
    echo [INFO] 指定文件仍存在,跳过关机操作
)

关键说明

  • 替换TARGET_FILE为实际的文件路径,MACHINES为需要关闭的机器列表
  • shutdown参数解释:/s执行关机,/m \\机器名指定远程目标,/t 60设置60秒延迟(方便紧急取消),/f强制关闭未响应程序,/c添加关机提示信息
  • 执行前提:当前登录用户在目标机器上拥有管理员权限,且目标机器已启用远程关机服务

PowerShell脚本方案

功能更灵活,适合复杂场景的扩展:

# 配置参数
$targetFile = "C:\your\actual\path\swmw.obj"
$machines = @("PC-01", "192.168.1.100", "Server02")  # 替换为目标机器名/IP

# 检查文件是否不存在
if (-not (Test-Path -Path $targetFile)) {
    Write-Host "[INFO] 指定文件不存在,开始执行远程关机..." -ForegroundColor Cyan
    foreach ($machine in $machines) {
        Write-Host "[PROCESS] 正在关闭 $machine" -ForegroundColor Yellow
        Stop-Computer -ComputerName $machine -Force -Comment "备份完成且指定文件已清理,自动关机" -Delay 60
    }
} else {
    Write-Host "[INFO] 指定文件仍存在,跳过关机操作" -ForegroundColor Red
}

关键说明

  • Test-Path用于检测文件存在性,-not取反实现“文件不存在”的判断
  • Stop-Computer是PowerShell原生关机命令,-Force强制关闭程序,-Delay设置关机延迟,-Comment记录关机原因
  • 执行前提:当前用户拥有目标机器的管理员权限,目标机器已启用PowerShell远程(可提前执行Enable-PSRemoting -Force配置)

额外注意事项

  1. 请将备份程序的“完成后关机”选项替换为“完成后调用此脚本”,确保脚本在备份成功后触发
  2. 测试阶段可将关机命令替换为提示语句(比如批处理里的echo 模拟关闭 %%m,PowerShell里的Write-Host 模拟关闭 $machine),验证逻辑正确性
  3. 远程关机需要目标机器防火墙允许RPC相关端口通信,确保网络连通正常

内容的提问来源于stack exchange,提问作者PerserPolis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 22:25:24