Я видел много вариантов моей ситуации, но не могу найти тот, который бы мне подходил (очень неопытен). По сути, у меня есть папка (E:\Downloads), в которую добавляются папки, а также пакетный файл (Extractor.bat). Я хотел бы раз в неделю удалять все папки и файлы из E:\Downloads, но НИКОГДА не удалять Extractor.bat. Спасибо за любую помощь по этому вопросу! (Часть «раз в неделю» не обязательна в скрипте, я знаю, что могу просто задать задачу Windows для запуска bat-файла в указанные дни).
Виндовс 10
решение1
Видите Set DEBUG=echo
линию?
Отключите эту строку с помощью REM
или ::
когда вы уверены, что она делает то, что вы хотите. Этот скрипт безвреден, пока он существует... не так уж и опасен, если вы его удалите.
Эта if /i not "%DownloadsDir%" == "%CD%"
фраза появилась из-за того, что я был глуп и удалил все свои файлы в неправильную папку, когда был моложе и глупее.
Кроме того, вы можете изменить cd /d
to pushd
и поставить a popd
внизу, если вы запускаете это в cmd.exe и это портит ваш текущий путь.
@echo off
SetLocal
Set DEBUG=echo
Set DownloadsDir=E:\Downloads
cd /d %DownloadsDir%
if /i not "%DownloadsDir%" == "%CD%" echo Bad directory! && goto :EOF
for /F "delims=" %%d in ('dir /ad /b') do %DEBUG% rd /s /q "%%d"
for %%f in (*.*) do if /i not "%%f"=="Extractor.bat" %DEBUG% del /F /Q "%%f"
EndLocal