将文本附加到.txt文件末尾的批处理文件将锁定文件

时间:2017-06-07 09:47:07

标签: batch-file cmd locking append del

我们有一个使用批处理文件的进程,简而言之,它反复获取一些纯文本数据并将其附加到.txt文件的末尾以供以后处理。处理数据时,将删除.txt。

这是通过使用">>"以非常简单和基本的方式完成的。运算符将数据附加到.txt文件,然后是“' DEL' cmd删除.txt文件。

但是,有一个用户在运行此问题时遇到问题。他们能够将数据附加到.txt文件,但由于文件似乎被锁定,因此无法将其删除。当批处理文件尝试删除时,它们会收到此消息:

"该进程无法访问该文件,因为该文件正由另一个进程使用。"

正在创建的.txt文件位于网络驱动器上,其他任何用户都无法删除该文件(或更改文件等)。

但是,如果有问题的用户重新启动他们的PC,则可以编辑和删除该文件(这似乎表明用户正在使用该文件的PC上有一些进程)。 / p>

下面的批处理文件是我制作的极其简化的演示,它为用户体验了这个问题,但对其他任何人都没有。这不是真正的'当然是过程,但说明了没有任何多余代码的问题,并且完全独立于主要流程正在做的其他任何事情。

:: we want to repeatedly append text to the end of a txt file
echo test >> test.txt
echo test >> test.txt
echo test >> test.txt

pause

:: but then we cannot delete the file as it appears to be locked
del test.txt

pause

有问题的用户刚刚使用Windows 10安装了新PC。其他人都在使用Windows 7.也许这是问题的根源,但我不知道为什么?我知道命令提示符对Win10有一些变化,但它们听起来很漂亮。

任何指针都将不胜感激。我已经在网上搜了好几个小时,找不到类似这个问题的东西。也许我正在做一些根本错误的事情,没有人会遇到过这个问题?!

提前致谢。

1 个答案:

答案 0 :(得分:0)

我在Windows 7上遇到类似的问题,产生相同的错误信息,但我的情况有点不同。在我的情况下,我在编辑器中打开批处理文件,我进行更改并保存。然后我运行批处理文件,它完成并关闭控制台窗口。我进行更改并尝试再次保存文件并获得相同的错误消息。如果我等待30秒左右,我可以再次保存批处理文件,但是当我再次运行它时,我得到同样的错误。

关闭控制台窗口并不重要。我可以让批处理文件完成并关闭窗口或通过任务管理器终止批处理文件,或者单击窗口右上角的X并获得相同的结果。

我使用的编辑器也无关紧要。我得到了相同的结果。

在我的情况下,该文件位于本地驱动器(C :)上,但该驱动器确实具有网络的驱动器映射,但没有其他计算机正在运行。

如果在本地创建.txt文件,您是否遇到同样的问题,例如C:?

如果Win10机器正在使用驱动器映射,如果使用UNC而不是驱动器映射,是否会遇到同样的问题?

在我的情况下,控制台窗口关闭,所以我知道cmd.exe没有打开文件,但我想知道它是否与内存管理或垃圾收集有关。

如果用户注销并重新启动而不是重新启动,用户是否可以删除该文件?

还有一件事可能会导致。 Windows现在有一种叫做“延迟写入”的东西。我偶尔在批处理文件中遇到这个问题。尝试在批处理文件中延迟,而不是使用

之类的暂停
PING 0.0.0.1 -n 3 -w 1000>NUL 2>&1

只是为了看它是否会影响任何事情。