【问题标题】:Powershell - Check if file is finished writingPowershell - 检查文件是否已完成写入
【发布时间】:2015-04-01 15:06:12
【问题描述】:

我有一个 powershell 代码,它充当给定文件夹路径上的文件侦听器。侦听器启动对另一个程序的命令行调用,该程序打开并播放该文件。

问题在于,如果任何文件放入此文件夹,powershell 代码会立即启动命令行调用。如果文件非常大(比如 100+mb),这是一个问题,因为当一个人将文件复制到文件夹中时,当命令函数启动并尝试打开文件时,文件可能只有 5% 完成“写入” (并且失败了)。

powershell 中是否有办法检查文件是否仍在写入?这样我就可以构建一个循环,每 x 秒检查一次,并且只在写入完成后运行?

如果文件也在被写入,它是否会保持“锁定”?这可以在 Powershell 中检查吗?

谢谢大家!

【问题讨论】:

    标签: powershell file-locking


    【解决方案1】:

    System.IO.FileInfo 或类似的地方可能有一个锁定检查,但我使用简单的长度检查。它进入被调用的脚本而不是文件观察脚本。

    $LastLength = 1
    $NewLength = (Get-Item $FileName).length
    while ($NewLength -ne $LastLength) {
       $LastLength = $NewLength
       Start-Sleep -Seconds 60
       $NewLength = (Get-Item $FileName).length
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-29
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      • 2013-03-10
      • 1970-01-01
      • 1970-01-01
      • 2020-08-28
      相关资源
      最近更新 更多