«многоразовый» bat-файл

DllPok

Активный пользователь
Сообщения
169
Реакции
62
здравствуйте,
как создать .bat, который удалит все файлы папки и подпапок куда поместили этот bat-файл, но чтобы сам bat-файл не удалился.
Цель, каждый раз в Командной строке написать del /f/s/q "путь к папке\*.*" надоедает
 

DllPok

Активный пользователь
Сообщения
169
Реакции
62
вот этот bat:
@echo off
del: *.*/q
к сожалению удаляет только файлы папки, а подпапки не трогает
 

DllPok

Активный пользователь
Сообщения
169
Реакции
62
удалить все файлы в папке и в подпапках включая подпапки:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "TargetFolder=%~1"
if not defined TargetFolder set "TargetFolder=."
set "ExcludeBatchFile="
for %%I in ("%TargetFolder%\") do if "%%~dpI" == "%~dp0" set "ExcludeBatchFile=/C:"%~nx0""
for /F "eol=| delims=" %%I in ('dir "%TargetFolder%\" /AD /B 2^>nul ^| %SystemRoot%\System32\findstr.exe /I /L /V /X /C:"special folder"') do rd /S /Q "%TargetFolder%\%%I"
for /F "eol=| delims=" %%I in ('dir "%TargetFolder%\" /A-D /B 2^>nul ^| %SystemRoot%\System32\findstr.exe /I /L /V /X /C:"имя_вашего_файла.bat" %ExcludeBatchFile%') do del /A /F "%TargetFolder%\%%I"
endlocal
если этот bat_файл поместить в папку, то удаляет содержимое самой папки и файлы подпапок включая самих подпапки, кроме себя, то есть в папке остается только bat_файл
и это, то что я искал
Оригинал Статьи и Код
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,621
Реакции
6,060
Как альтернатива, можно зайти в свойства файла батника и на вкладке "Безопасность") отозвать права на "Удаление" у текущего пользователя или группы, в которую он входит, тогда операцию удаления можно будет произвести более надёжно (по маске), игнорируя всякого рода ограничения на служебные символы, которые могут попадаться в именах и таким образом потенциально не удалиться при прямом перечислении как в коде выше.
Код:
rd /s /q "%~dp0"
 
Сверху Снизу