Пакетное удаление: доступ запрещен

10

У меня проблемы с delкомандой в командном файле. Когда дело доходит до шага удаления, я получаю сообщение «Доступ запрещен». Моя пакетная команда выглядит примерно так.

set destPath=\\Public01\Appl\CompOps\Jobs\

robocopy . "%destPath%" *.dtsx *.dev *.prod *.ppro /IS

pushd "%destPath%"
del *.dtsConfig
ren *.dev .
popd

Введите описание изображения здесь

Я могу просматривать каталог и удалять файлы без проблем в проводнике Windows .

Я пробовал работать от имени администратора, но проблема все та же.

agradl
источник

Ответы:

7

Чтобы заставить delкоманду удалить файлы только для чтения, добавьте /Fфлаг.

Очевидно, что файл только для чтения не может быть удален пакетным файлом, хотя он все еще может быть удален через Проводник Windows . Чтобы проверить, доступен ли ваш файл только для чтения, вы можете щелкнуть правой кнопкой мыши по файлу и выбрать свойства или ввести attrib <filename>в командной строке. Это покажет серию букв, соответствующих различным атрибутам файла.

R = Read-only file
A = Archive file
S = System file
H = Hidden file

Вы можете удалить доступный только для чтения тег, сняв флажок в окне свойств или выполнив команду attrib <filename> -R.

SaintWacko
источник
к сожалению, это не решает проблему, я обновлю свой вопрос, чтобы включить ваше предложение, хотя.
agradl
Попробуйте поставить pauseперед delкомандой, а затем попробуйте удалить ее через Windows Explorer, пока она приостановлена.
SaintWacko
Я нашел решение, однако, если вы хотите отредактировать свой ответ, чтобы включить некоторые предложения в дополнение к моему решению, я был бы рад пометить его как ответ
agradl
Хорошо, эта информация полезна задним числом? :)
SaintWacko
Я уверен, что это будет полезно, когда я забуду об этой проблеме через несколько месяцев :)
agradl
2

После экспериментов с параметрами, доступными для команды "del", я обнаружил, что файлы, которые я пытался удалить, были доступны только для чтения. Чтобы решить эту проблему, я мог бы либо отредактировать файлы, чтобы удалить атрибут только для чтения, либо указать параметр / F.

Окончательный сценарий

set destPath=\\Public01\Appl\CompOps\Jobs\

robocopy . "%destPath%" *.dtsx *.dev *.prod *.ppro /IS

pushd "%destPath%"
del /F *.dtsConfig
ren *.dev .
popd

Простое решение, но вводящее в заблуждение сообщение об ошибке. Надеюсь, это поможет кому-то еще.

agradl
источник
Если вы можете только прочитать его, то мне отказано в доступе.
Surfasb
1

Что сработало для моего ПК с Windows 8.1:

Прежде всего закройте Проводник Windows:

Нажмите Ctrl+ Alt+, Delчтобы открыть диспетчер задач , перейти к процессам, найти проводник Windows , щелкнуть правой кнопкой мыши и завершить задачу . Не волнуйтесь, если стартовый бар пропал и что-то еще. Используйте Alt+ Tabдля перемещения между файлами. Затем в диспетчере задач нажмите « Файл» и « Выполнить новую задачу» и введите cmd. Это откроет вам командную строку .

Внутри терминала :

Если ваша версия 32-битная, и в моем случае она находится в Program Files (x86) , то вам нужно набрать:

cd "C:\Program Files (x86)\Git\git-cheetah"
regsvr32 /u git_shell_ext64.dll

Это было для отмены регистрации.

Вы можете перемещаться между каталогами, используя, cd directorynameи вы можете получить обратно один каталог cd ... Для просмотра того, что находится в каталоге, вы можете ввести, dirкогда вы находитесь в этом каталоге. Для удаления типа файла:

del /F filename

После этого снова откройте диспетчер задач , перейдите в File , затем запустите explorer. Таким образом, вы попадете на обычный дисплей. Перейдите в папку Git, от которой мы хотели избавиться, и просто удалите ее.

Я надеюсь, что это работает для других людей, которые используют Windows 8.1.

Толга Варол
источник