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

编写PowerShell脚本监控锁定文件,解锁后执行指定命令

解决方案:PowerShell持续监控锁定文件并触发网页打开

刚好碰到过类似的场景,我给你整合了一个完整的脚本,把「持续监控」和「文件锁定检查」结合起来了,直接就能用,还留了方便修改的参数:

# 配置参数 - 这里改成你的实际信息
$targetFilePath = "C:\CNC\OutputFile.txt"  # CNC生成的锁定文件路径
$processingWebUrl = "http://your-intranet-site/process-file"  # 处理文件的内网网页URL
$checkIntervalSeconds = 5  # 每次检查的间隔时间(秒)

# 检查文件是否被锁定的函数
function Test-FileLocked {
    param([string]$Path)
    try {
        $fileStream = [System.IO.File]::Open($Path, 'Open', 'Write', 'None')
        $fileStream.Close()
        $fileStream.Dispose()
        return $false  # 文件未锁定
    }
    catch {
        return $true  # 文件被锁定
    }
}

Write-Host "开始监控文件: $targetFilePath" -ForegroundColor Cyan

# 持续监控直到文件解锁
do {
    if (Test-FileLocked -Path $targetFilePath) {
        Write-Host "文件仍处于锁定状态,$checkIntervalSeconds秒后再次检查..." -ForegroundColor Yellow
        Start-Sleep -Seconds $checkIntervalSeconds
    }
} while (Test-FileLocked -Path $targetFilePath)

# 文件解锁后打开处理网页
Write-Host "文件已解锁,正在打开处理网页..." -ForegroundColor Green
Start-Process $processingWebUrl

关键部分解释:

  • 参数配置区:最顶部的三个变量,你只需要替换成自己的文件路径、内网网页地址和检查间隔就行,不用动后面的逻辑。
  • Test-FileLocked函数:核心是尝试以「写入权限」打开文件——如果CNC还锁定着文件,这个操作会抛出异常,我们就判定文件还在锁定;如果能成功打开,说明文件已经解锁了。
  • 循环监控:用do-while循环持续检查,每次检查后等待设定的间隔时间,避免频繁占用系统资源。
  • 触发网页:文件解锁后,用Start-Process直接调用系统默认浏览器打开指定的内网网页,自动触发文件处理流程。

注意事项:

  • 确保运行脚本的账号有读取和写入目标文件的权限,不然可能误判锁定状态。
  • 如果需要用特定浏览器打开网页,可以在Start-Process里指定浏览器路径,比如Start-Process "C:\Program Files\Google\Chrome\Application\chrome.exe" $processingWebUrl。
  • 检查间隔可以根据CNC的操作节奏调整,比如如果CNC解锁文件的时间比较固定,可以设长一点(比如10秒)减少资源消耗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:16:14