当尝试通过 Windows(我使用的是 Windows 7)批处理文件使用带有 /f 和 /q 标志的“del”命令从网络位置删除文件时,我看到“访问被拒绝。”消息,并且文件未被删除。但是,我可以通过 Windows 资源管理器手动成功删除该文件。
我一直在使用我的个人用户帐户运行批处理文件,它应该使用与通过 Windows 资源管理器手动删除相同的权限。
我尝试删除的文件没有什么特别的,它是一个空白文本文件,在我注意到我们的某些自动化代码无法从该位置删除文件后,我为测试而创建它。
该问题仅存在于一个特定的网络共享上,在所有其他位置,我都可以使用 Windows 批处理文件删除文件而不会出现任何问题。
此外,我可以通过批处理文件在相关网络位置成功创建文本文件,没有任何问题。只是删除命令给我带来了“访问被拒绝。”的问题。
我的帐户所在的组无权访问包含相关文件夹的共享,但可以访问共享上的文件夹。此网络位置的安全性设置方式如下:
\\Server\Share\Folder1
\\Server\Share\Folder2
我的帐户所在的组对 Folder1 和 Folder2 具有“修改”权限,但没有共享权限。
编辑: 根据要求,相关命令行如下:
del \\Server\Share\Folder\TEST_FILE.txt /F /Q
是否有人知道可能导致此问题的任何网络/安全现象,以及我该如何解决它?
答案1
我不确定为什么会发生这种情况,但我怀疑该del
命令不正确支持 UNC 路径名。
我可以轻松地重现这个问题,当我使用映射驱动器时错误就消失了:
del \\share\folder\file.txt
:: got an error 'Access denied'
net use Z: \\share\folder
del Z:\file.txt
:: file deleted successfully
奇怪的是,其他命令确实有效。例如,我可以创建一个子目录,将文件移动到那里,然后删除该子目录:
mkdir \\share\folder\trash
move \\share\folder\file.txt \\share\folder\trash
rmdir /s /q \\share\folder\trash
答案2
命令“del \y\x”在“y”中搜索所有与“x”匹配的文件,因此您需要在“y”上列出目录访问权限。
对于网络共享,您获得的访问权限是共享权限和您访问的对象的权限的交集,如果文件允许您写入,但共享不允许,那么您就无法写入。