Làm cách nào tôi có thể xóa tất cả các tệp / thư mục con trong một thư mục đã cho thông qua dấu nhắc lệnh?


42

Tôi muốn xóa tất cả các tệp và thư mục con trong một tệp bó trong Windows 7 và giữ thư mục trên cùng. Về cơ bản làm trống thư mục. Hướng dẫn dòng lệnh cho điều đó là gì?


3
Không phải cho nitpick, nhưng bạn đang tìm cách làm điều này "từ dấu nhắc lệnh" không phải từ "DOS." Không có hệ thống con DOS kể từ Win ME.
MDMarra

@MarkM: Vâng, có / ntvdmnhưng các hệ thống 64 bit chiếm thị phần ngày càng không liên quan.
Joey

Câu trả lời:


55

Bạn có thể thực hiện việc này bằng cách sử dụng del/Scờ (để yêu cầu xóa tất cả các tệp khỏi tất cả các thư mục con):

del /S C:\Path\to\directory\*

2
của bạn là tốt hơn: D +1 - Đã xóa câu trả lời của tôi
BloodPhilia

3
Giải thích: del là viết tắt của Xóa và S là viết tắt của Recursive.
Tamara Wijsman

3
@Tony_Henrich, Tìm hiểu thêm về các lệnh msdos tại đây. computerhope.com/msdos.htm
Moab

3
và sử dụng / Q giữ các thư mục con trống không mong muốn.
Tony_Henrich

3
Đây là câu trả lời sai và tôi không biết tại sao nó lại nhận được nhiều phiếu bầu. Có vẻ như mọi người đã không hiểu câu hỏi đầy đủ và không đọc bình luận! Tôi sẽ đi qua các câu trả lời và chọn câu trả lời đúng.
Tony_Henrich

22

Giải pháp tốt nhất: ví dụ: tôi muốn xóa tất cả các tệp và thư mục con của thư mục mẹ, hãy nói "C: \ Users \ Desktop \ Thư mục mới \". Cách dễ dàng là tạo tập tin hàng loạt của ba lệnh dưới đây.

cd C: \ Users \ Desktop \ Thư mục mới \

del * / S / Q

rmdir / S / Q "C: \ Users \ Desktop \ Thư mục mới \"

Ở đây đầu tiên nó sẽ dọn sạch tất cả các tập tin trong tất cả các thư mục con và sau đó xóa tất cả các thư mục con trống. Vì thư mục làm việc hiện tại là thư mục mẹ, tức là "\ Thư mục mới", lệnh rmdir không thể xóa thư mục này.


1
Hoạt động rất tốt, ngoại trừ cảnh báo khi hệ thống không thể xóa thư mục gốc.
Jerther

2
Không tốt. Đường dẫn được mã hóa cứng và bằng cách nhìn vào nó, nó không làm trống thư mục. Nó loại bỏ nó. Cũng rất nguy hiểm. Nó xóa các tệp trong thư mục hiện tại nếu đường dẫn không thoát hoặc sai chính tả.
Tony_Henrich

1
Như @Tony_Henrich cho biết rmdirlệnh sẽ xóaNew folder
Nuktu

Không. Điều này thực sự hoạt động trong việc xóa hoàn toàn "Thư mục mới" mà không xóa chính thư mục đó. Vấn đề duy nhất là nó đưa ra một cảnh báo nhỏ khi HĐH không xóa thư mục mẹ. Ngoài ra, lệnh del là dự phòng trừ khi bạn có một thư mục lớn, trong trường hợp đó có thể nhanh hơn. Bạn chỉ có thể sửa đổi nó như vậy (Xin lỗi về việc thiếu ngắt dòng trong nhận xét): đặt FOLDER = "% userprofile% \ Desktop \ Thư mục mới" cd% FOLDER% rmdir / S / Q% FOLDER% \> nul 2> & 1
HSuke

3
Thực sự nguy hiểm. Nếu ai đó tiếp tục và xóa / đổi tên `C: \ Users \ Desktop \ Thư mục mới`, dòng đầu tiên với CD không thành công và tệp bó của bạn sẽ vui vẻ xóa mọi thứ trong thư mục (mặc định) hiện tại. Rất có thể cuối cùng là thư mục làm việc của bạn hoặc C: \ Windows \ System32
Ishmaeel

9

Điều hướng đến thư mục mẹ:

pushd "Parent Directory"

Xóa các thư mục con:

rd /s /q . 2>nul

1
Wow, đó là hackish. :)
Tarnay Kálmán

1
Điều này về cơ bản tương đương với hai câu trả lời trước.
Scott

Đồng ý với ở trên - đây là bản sao của các câu trả lời trước đó, được thay thế bằng các lệnh đồng nghĩa với các câu trả lời mà chúng đang thay thế. pushdkhông thêm bất cứ điều gì ở đây mà cdchưa làm.
Hashim

đây là người duy nhất tôi có thể sử dụng cho đến nay hoạt động chính xác cho những gì người hỏi đang hỏi, tất cả những người khác chỉ cần xóa tất cả các tệp. Tất nhiên rmdir /s path-to-foldersẽ xóa thư mục với tất cả những thứ trong đó, nhưng người hỏi muốn biết làm thế nào để xóa mọi thứ trong thư mục làm việc.
Katz_Katz_Katz

Câu trả lời này làm việc tốt nhất cho tôi. Với tất cả các câu trả lời khác, nó không xóa các thư mục không trống khi sử dụng / Q và nó luôn yêu cầu xác nhận khi không sử dụng / Q.
marijnr

5
rmdir "c:\pathofyourdirectory" /q /s

Đừng quên sử dụng dấu ngoặc kép và vì /q /snó sẽ xóa tất cả các kho lưu trữ và không cần nhắc.


2
Câu hỏi là "Tôi muốn xóa tất cả các tệp và thư mục con trong một tệp bó trong Windows 7 và giữ thư mục trên cùng. "
Werner Henze

5

bạn có thể sử dụng rmdir để xóa các tập tin và thư mục con, như thế này:

rmdir /s/q MyFolderPath

Tuy nhiên, nó nhanh hơn đáng kể, đặc biệt là khi bạn có rất nhiều thư mục con trong cấu trúc của mình để sử dụng del trước rmdir, như thế này:

del /f/s/q MyFolderPath > nul
rmdir /s/q MyFolderPath

Tùy chọn đầu tiên đưa ra lỗi "thư mục không trống". Lệnh đầu tiên trong tùy chọn thứ hai, xóa toàn bộ thư mục. Nó không giữ nó như tôi muốn. Lệnh thứ hai là không cần thiết nếu lệnh đầu tiên xóa toàn bộ thư mục.
Tony_Henrich

Các rmdirlệnh (cả hai đều giống nhau) sẽ xóa thư mục mẹ. Đây không phải là một câu trả lời cho câu hỏi. Tại sao mọi người không đọc?
Hashim

3

Nếu bạn muốn xóa tất cả các tệp trong một thư mục, bao gồm tất cả các thư mục con và không dựa vào một số điều kiện lỗi để giữ nguyên thư mục gốc (như tôi đã thấy trong một câu trả lời khác), bạn có thể có một tệp bó như thế này:

@echo off

REM Checking for command line parameter
if "%~1"=="" (

    echo Parameter required.
    exit /b 1

) else (

    REM Change directory and keep track of the previous one
    pushd "%~1"

    if errorlevel 1 (

        REM The directory passed from command line is not valid, stop here.
        exit /b %errorlevel%

    ) else (

        REM First we delete all files, including the ones in the subdirs, without confirmation
        del * /S /Q

        REM Then we delete all the empty subdirs that were left behind
        for /f %%D IN ('dir /b /s /a:d "%~1"') DO rmdir /S /Q "%%D"

        REM Change directory back to the previous one
        popd

        REM All good.
        exit /b 0
    )

)

Và sau đó bạn chỉ cần gọi nó bằng:

empty_my_folder.bat "C:\whatever\is\my folder"

3

Bạn có thể thực hiện nhanh chóng và dễ dàng bằng cách đặt ba hướng dẫn này vào tệp dơi của mình:

mkdir empty_folder
robocopy /mir empty_folder "path_to_directory"
rmdir empty_folder

Điều này vô cùng hữu ích vì nó cũng loại bỏ bất kỳ tập tin hệ thống hoặc ẩn.
yếu tố

1

Điều này làm việc tốt hơn cho tôi khi tôi có khoảng trắng trong tên thư mục.

@echo off
REM ---- Batch file to clean out a folder
REM Checking for command line parameter
if "%~1"=="" (

echo Parameter required.
exit /b 1

) else (
echo ***********************************************************************************
    echo *** Deleting all files, including the ones in the subdirs, without confirmation *** 
    del "%~1\*" /S /Q
echo ***********************************************************************************
    REM Deleting all the empty subdirs that were left behind
FOR /R "%~1" %%D IN (.) DO (
    if "%%D"=="%~1\."  (
    echo *** Cleaning out folder: %~1 *** 
    ) else (
    echo Removed folder "%%D"
    rmdir /S /Q "%%D"
    )
) 

    REM All good.
    exit /b 0

)

Mọi người luôn quên về việc có không gian trong tên.
Kevin Panko

1

Để xóa tập tin:

del PATH_TO_FILE

Để xóa thư mục có tất cả các tệp trong đó:

rmdir /s /q PATH_TO_FOLDER

Để xóa tất cả các tệp khỏi thư mục cụ thể (không xóa chính thư mục) thì hơi phức tạp một chút. del /s *.*không thể xóa các thư mục, nhưng xóa các tệp khỏi tất cả các thư mục con. Vì vậy, hai lệnh là cần thiết:

del /q PATH_TO_FOLDER\*.*
for /d %i in (PATH_TO_FOLDER\*.*) do @rmdir /s /q "%i"

Bạn có thể tạo một tập lệnh để xóa bất cứ thứ gì bạn muốn (thư mục hoặc tệp) như thế này mydel.bat:

@echo off
setlocal enableextensions

if "%~1"=="" (
    echo Usage: %0 path
    exit /b 1
)

:: check whether it is folder or file
set ISDIR=0
set ATTR=%~a1
set DIRATTR=%ATTR:~0,1%
if /i "%DIRATTR%"=="d" set ISDIR=1

:: Delete folder or file
if %ISDIR%==1 (rmdir /s /q "%~1") else (del "%~1")
exit /b %ERRORLEVEL%

Một vài ví dụ về việc sử dụng:

mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder

0

Đây là những gì làm việc cho tôi.

  1. Điều hướng trong thư mục mà bạn muốn xóa các tập tin.
  2. Thể loại: del *
  3. Y cho có
  4. Làm xong
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.