2013-03-27 59 views
0

在我的sceniro中,我正在检查特定文件夹中的文件并检查它是否存在。如果它存在,我正在做一些操作。 但我的问题是,这些文件正在由其他进程生成[通常需要20-30分钟来生成文件],所以例如在任何情况下,当我检查文件夹中的文件,我发现它。现在,我需要确保它现在不在处理中,以便我可以继续我的操作。下面的代码片段里面我是用:确定该文件没有被任何其他进程使用

编辑 我的问题是这样的,我怎么能识别该文件是未使用(或如何产生)的其它过程。

$Filesitems = Get-ChildItem -Path "D:\SomeFolder\Sub_Folder" 


foreach ($objItem in $Filesitems) 
{ 

     if ($objItem.Name.Contains("Process")) 
     { 
      Write-Host $objItem.Name 
     } 
} 
+0

@joachim我的问题是这样的,我怎么能识别该文件是未使用(或正在生成)通过其他进程。 – Zerotoinfinity 2013-03-27 16:54:30

+0

是否可以在临时目录中生成文件,并在完成后将其移动到正确的位置? – 2013-03-27 16:55:42

+0

我无法控制这个过程。仅在该文件夹上生成文件。 – Zerotoinfinity 2013-03-27 16:56:52

回答

0

我可能会尝试使用“锁定”文件来避免这种行为。

确保每当该进程在文件上工作时,该进程还会生成(空)file.lock文件,并在该进程完成文件处理时将其删除。

在这种情况下,你可以检查锁文件是否存在,所以你知道,另一个进程仍在研究该特定文件

+0

这是一个很好的建议,但我无法控制这个过程。 ( – Zerotoinfinity 2013-03-27 16:56:03

+0

)在文件末尾有什么东西总是写得最后,就像EOF或其他类似的文件一样吗? ...否则你将不得不掉到文件系统级别,看看你是否能找出在什么状态下文件是。我不知道如何做到这一点,我很害怕:) – 2013-03-27 16:57:39

+0

文件生成一些列和行分隔符,但这不会帮助我们。但是,你的意思是像IsReadOnly这样的Filestram属性可以在这些情况下工作吗? – Zerotoinfinity 2013-03-27 17:00:59

相关问题