Powershell - 检查文件是否写完

时间:2015-04-01 15:06:13

标签: powershell file-locking

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

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

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

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

谢谢大家!

1 个答案:

答案 0 :(得分:4)

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
}