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


10

У мене виникають проблеми з delкомандою в пакетному файлі. Коли я дійшов до етапу видалення, я отримую повідомлення "Доступ заборонено". Моя командна партія виглядає приблизно так.

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

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

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

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

Я можу переглядати каталог і видаляти файли без проблем у Провіднику Windows .

Я спробував запуститись як адміністратор, але все-таки проблема.

Відповіді:


7

Щоб змусити delкоманду видаляти файли, які доступні лише для читання, додайте /Fпрапор.

Мабуть, файл лише для читання не може бути видалений пакетним файлом, хоча його ще можна видалити через Провідник Windows . Щоб перевірити, чи ваш файл доступний лише для читання, можна клацнути правою кнопкою миші файл і вибрати властивості, або ввести attrib <filename>в командному рядку. Це покаже серію листів, що відповідають різним атрибутам файлів.

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

Ви можете видалити тег лише для читання, знявши прапорець у вікні властивостей або запустивши команду attrib <filename> -R.


на жаль, це не вирішує проблему, я оновлю своє питання, щоб включити вашу пропозицію.
agradl

Спробуйте поставити pauseперед delкомандою, а потім спробуйте видалити її через Провідник Windows, поки вона призупинена.
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

Просте рішення, але оманливе повідомлення про помилку. Сподіваємось, це допомагає комусь іншому.


Якщо ви можете лише прочитати, в доступі заборонено доступ до права.
surfasb

1

Що працює для мого ПК з Windows 8.1:

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

Натисніть Ctrl+ Alt+ Delдля відкриття диспетчера завдань , перейдіть до процесів, знайдіть Провідник Windows , клацніть правою кнопкою миші та закінчіть завдання . Не хвилюйтеся, якщо панель запуску піде і щось інше. Використовуйте Alt+ Tabдля переходу між файлами. Потім у Диспетчері завдань натисніть « Файл» та запустіть нове завдання та введіть cmd. Це відкриє вам командний рядок .

Всередині терміналу :

Якщо ваша версія 32-бітна, а в моєму випадку вона розміщена в програмних файлах (x86) , тож слід ввести:

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

Це було для незареєстрування.

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

del /F filename

Після цього знову відкрийте диспетчер завдань , перейдіть до файлу , а потім запустіть explorer. Таким чином ви перейдете до звичного відображення. Перейдіть до папки Git, якої ми хотіли позбутися, і видаліть її просто.

Сподіваюся, це працює для інших людей, які використовують Windows 8.1.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.