我应该如何将文件夹标记为已在脚本中处理?

How should I mark a folder as processed in a script?

脚本应在 Windows 机器上处理文件夹中的文件,并在完成后将其标记为完成,以免在下一轮处理中拾取它。

我倾向于让脚本将文件夹重命名为不同的名称,例如添加“_done”。

但是在 Windows,如果某个进程打开了文件夹或其中的文件,则无法重命名文件夹。在此设置中,某些用户打开文件夹的可能性很小。

或者,我可以将一个图章文件写入该文件夹。

有更好的选择吗? 有没有办法强制重命名,特别是在共享驱动器或某些 NAS 驱动器上时?

您有几个选择:

  1. 在每个已处理的文件夹中放入某种令牌文件,并跳过包含该文件的文件夹
  2. 跟踪最后处理的文件夹,只处理较新的文件夹(按时间戳或(因为它们按顺序编号),按序列号)
  3. 重命名文件夹

由于您已经说过其他用户可能已经打开 folder/files,我们可以排除 #3。

在这种情况下,我赞成选项 #1,即使你最终会得到额外的文件,如果有人需要尝试找出哪些文件夹已经被处理过,他们有一个快速、简单的方法用肉眼辨别它的方法,而不是试图在不同文件的某个地方找到一个计数器。编写的代码也少了一点,因此要分解的部分也少了。

选项 #2 在这种情况下也很好(我根据情况使用了两者),但我倾向于使用它来处理人类并不真正需要关心或需要查看的事情经常。