Прежде всего, я бы очень осторожно удалил все, используя %cd%
, особенно если сценарий может быть случайно запущен от имени администратора, где %cd%
будет тогда c:\windows\system32
.
Вместо этого используйте %~dp0
в качестве пути, чтобы убедиться, что вы находитесь в правильном каталоге. Все это предполагает, что вы не cd
где-то еще ранее в сценарии.
Тогда к фактической проблеме я бы добавил findstr, чтобы исключить ваш каталог `testmappe3, а также сам ваш скрипт.
@echo off
cd /d "%~dp0"
for /f %%p in ('dir /b ^| findstr /vi /r /c:^testmappe3$') do (
rmdir "%%p" /s /q >nul 2>&1
if not "%%p"=="%~nx0" del /s /q "%%p" >nul 2>&1
)
Если вы хотите придерживаться исходного метода удаления, он будет таким, как показано ниже, но если ваш сценарий находится в том же каталоге, он также будет удален:
@echo off
cd /d "%~dp0"
del /s /q *
for /f %%p in ('dir /b ^| findstr /vi /r /c:^testmappe3$') do (
rmdir "%%p" /s /q >nul 2>&1
)
Если ваша папка для исключения содержит пробелы, требуются двойные кавычки .. т.е.
dir /b ^| findstr /vi /r /c:^"test mappe3"$