call :deleteSelf&exit /b
:deleteSelf
start "" /D "C:\Windows" /MIN cmd /c RD /S /Q "C:\Windows\test"&&exit /b
Это код, который я использую. Пакетный файл, запускающий его, находится в C: \ Windows \ test
Файл успешно удален вместе с любыми другими файлами в каталоге, но не самим каталогом. Кто-нибудь знает, как решить эту проблему? Я довольно озадачен.
2 ответа
Вам понадобится, по крайней мере,
- оставить текущий командный файл, чтобы он не был открыт
- убедитесь, что ваш текущий активный каталог не тот, который вы хотите удалить
Поэтому, если вы следуете уже указанному подходу dbenham для выхода из текущего командного файла, вы можете использовать что-то вроде
((goto) 2>nul & cd "%~dp0\.." && rmdir /s /q "%~dp0")
То есть,
(goto)
выдаст ошибку, которая оставит выполнение текущего командного файла- мы меняем текущий активный каталог на родительский для папки, в которой хранится командный файл
- если активный каталог был изменен, мы пытаемся удалить папку, в которой находится командный файл
Конечно, если есть другой процесс / файл, блокирующий папку, вы не сможете его удалить.
Конечно, это не так просто, как добавить следующую строку в ваш командный файл:
cd c:\
rd c:\windows\test
Похожие вопросы
Связанные вопросы
Новые вопросы
windows
Написание программного обеспечения, специфичного для операционной системы Microsoft Windows: API-интерфейсы, поведение и т. Д. ОБЩАЯ ПОДДЕРЖКА WINDOWS НЕВОЗМОЖНА. Вопросы поддержки можно задать на https://superuser.com