【发布时间】:2017-11-08 14:20:59
【问题描述】:
我们有一个使用批处理文件的过程,简而言之,它反复获取一些纯文本数据并将其附加到 .txt 文件的末尾以供以后处理。数据处理完毕后,删除.txt。
这是通过使用“>>”运算符将数据附加到 .txt 文件,然后使用 'DEL' cmd 删除 .txt 文件以非常简单和基本的方式完成的。
但是,一位用户在运行此程序时遇到了问题。他们能够将数据附加到 .txt 文件中,但由于文件似乎已被锁定,因此无法将其删除。当批处理文件尝试删除时,他们会收到此消息:
“该进程无法访问该文件,因为它正被另一个进程使用。”
正在创建的 .txt 文件位于网络驱动器上,其他用户也无法删除该文件(或更改它等)。
但是,如果有问题的用户重新启动他们的 PC,则可以编辑和删除该文件(这似乎表明用户的 PC 上有一些进程正在使用该文件)。
下面的批处理文件是我制作的一个非常简化的演示,它为用户体验了这个问题,但对其他人没有。当然,这不是“真正的”过程,但没有任何多余的代码就说明了问题,并且完全独立于主过程正在执行的任何其他操作。
:: 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 有一些更改,但它们听起来很漂亮。
任何指针将不胜感激。我已经在互联网上搜索了几个小时,但找不到任何类似的问题。也许我做的事情根本上是错误的,没有人会遇到这种情况?!
提前致谢。
【问题讨论】:
-
我的第一个嫌疑人是机器上运行的反恶意软件扫描程序。但是那些导致共享冲突的情况并不常见,尤其是在像这样的简单情况下。
-
顺便说一句,控制台 (conhost.exe) 在 Windows 10 中得到了显着更新,但是,据我所知,cmd shell 中没有任何显着变化。我认为这就是您所说的装饰性更改的意思,即对控制台 UI 的更改。
标签: batch-file cmd locking append del