@echo off
chcp 1251 > nul
setlocal EnableExtensions, EnableDelayedExpansion

set onReboot=0

if "%~1"=="" ( call :help & exit /b )
if "%~1"=="/?" ( call :help & exit /b )
if "%~1"=="/r" ( set onReboot=1 & shift /1 )

if "%~1"=="/f" (
	set "fileName=%~2"
	if not exist "!fileName!" ( echo ОШИБКА: Файл не найден. & exit /b 1 )
	
	if "%~x2"==".exe" (
		tasklist | find "%~nx2" > nul
		if "!errorlevel!"=="0" taskkill /f /im "%~nx2" > nul
	)
	
	del "!fileName!"
	echo %errorlevel% !errorlevel!
	if not exist "!fileName!" ( echo Файл !fileName! удален 1. & exit /b )
	takeown /f "!fileName!"
	icacls "!fileName!" /grant:r !username!:d
	del "!fileName!" /f /q
	if "!errorlevel!"=="0" ( echo Файл !fileName! удален 2. & exit /b )
	echo Ошибка удаления !fileName!.
)

endlocal
exit /b

:help
	echo XDEL [/R] [/F ^<файл^>] [/D ^<папка^>]
	echo Удаляет файл или папку, даже если обычным способом этого сделать нельзя.
	echo.
	echo /R           Произвести удаление при следующей загрузке Windows.
	echo /F ^<файл^>    Удалить файл.
	echo /D ^<папка^>   Удалить папку.
exit /b