Как удалить все папки с системного диска из командной строки - PullRequest
2 голосов
/ 17 сентября 2011

Я пытаюсь написать пакетный скрипт, который удаляет все папки и файлы с системного диска (кроме системных папок, файлов), но я застрял в бите папки. Это для автоматического установочного диска Windows XP, и одно из встроенных обновлений создает случайную папку на диске C: \, которую я не могу удалить с помощью сценария, поскольку имя является случайным. Вот что я получил до сих пор:

@echo off
color  17
echo del-test
echo.

echo Hiding foders we want to keep
if exist "%systemdrive%\AUTOEXEC.BAT"           attrib +h "%systemdrive%\AUTOEXEC.BAT"
if exist "%systemdrive%\CONFIG.SYS"             attrib +h "%systemdrive%\CONFIG.SYS"
if exist "%systemdrive%\Documents and Settings" attrib +h "%systemdrive%\Documents and Settings"
if exist "%systemdrive%\Program Files"          attrib +h "%systemdrive%\Program Files"
if exist "%systemdrive%\Sysprep"                attrib +h "%systemdrive%\Sysprep"
if exist "%systemdrive%\temp"                   attrib +h "%systemdrive%\temp"
if exist "%systemdrive%\WINDOWS"                attrib +h "%systemdrive%\WINDOWS"
echo Done!
echo.

echo Deleting everything that isn't hidden on the system drive
del /q  %systemdrive%\*.*
dir /b c:| rd
echo Done!
echo.

echo Unhiding Folders
if exist "%systemdrive%\AUTOEXEC.BAT"            attrib -h "%systemdrive%\AUTOEXEC.BAT"
if exist "%systemdrive%\CONFIG.SYS"              attrib -h "%systemdrive%\CONFIG.SYS"
if exist "%systemdrive%\Documents and Settings"  attrib -h "%systemdrive%\Documents and Settings"
if exist "%systemdrive%\Program Files"           attrib -h "%systemdrive%\Program Files"
if exist "%systemdrive%\Sysprep"                 attrib -h "%systemdrive%\Sysprep"
if exist "%systemdrive%\temp"                    attrib -h "%systemdrive%\temp"
if exist "%systemdrive%\WINDOWS"                 attrib -h "%systemdrive%\WINDOWS"
echo Done!
echo.
>nul pause

Кстати, мне нужно удалить только одну папку. Спасибо.

Ответы [ 2 ]

1 голос
/ 17 сентября 2011

Вот еще одна идея.По сути, вы перебираете все файлы / папки в корне %SYSTEMDRIVE% и используете операторы IF для защиты известных файлов / папок.Это просто пример, который ничего не удаляет, вам нужно изменить строку ECHO ** Deleting %%i.Это было проверено, но не сильно ... пожалуйста, проверьте, прежде чем вы действительно удалите.

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

FOR /F "usebackq delims==" %%i IN (`DIR %SYSTEMDRIVE%\ /b`) DO (
  IF /I "%%i" EQU "Program Files" SET DO_NOT_DELETE=Y
  IF /I "%%i" EQU "Sysprep" SET DO_NOT_DELETE=Y
  IF /I "%%i" EQU "Temp" SET DO_NOT_DELETE=Y
  IF /I "%%i" EQU "Windows" SET DO_NOT_DELETE=Y
  IF /I "%%i" EQU "junkfile.txt" SET DO_NOT_DELETE=Y
  IF !DO_NOT_DELETE! EQU Y (
    ECHO NOT deleting %%i
  ) ELSE (
    ECHO ** Deleting %%i **
  )
  SET DO_NOT_DELETE=
)
1 голос
/ 17 сентября 2011
deltree /y yourDirectory

или

del /s /f yourDirectory && rd /s yourDirectory 

Источник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...