
При попытке удалить файл из сетевого расположения через пакетный файл Windows (у меня Windows 7) с помощью команды "del" с флагами /f и /q я вижу сообщение "Доступ запрещен", и файл не удаляется. Однако я могу успешно удалить файл вручную через проводник 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».
Что касается сетевых ресурсов, то доступ, который вы получаете, представляет собой пересечение разрешений на ресурс и на объект, к которому вы обращаетесь. Если файл разрешает вам запись, а ресурс — нет, то вы не можете ее выполнить.