Tôi sử dụng Windows.
Tôi muốn xóa tất cả các tệp và thư mục trong một thư mục bằng lệnh gọi hệ thống.
Tôi có thể gọi như vậy:
>rd /s /q c:\destination
>md c:\destination
Bạn có biết một cách dễ dàng hơn?
Tôi sử dụng Windows.
Tôi muốn xóa tất cả các tệp và thư mục trong một thư mục bằng lệnh gọi hệ thống.
Tôi có thể gọi như vậy:
>rd /s /q c:\destination
>md c:\destination
Bạn có biết một cách dễ dàng hơn?
Câu trả lời:
Không, tôi không biết.
Nếu bạn muốn giữ lại thư mục gốc vì một số lý do (ACL, & c.) Và thay vào đó thực sự muốn làm trống nó, thì bạn có thể làm như sau:
del /q destination\*
for /d %x in (destination\*) do @rd /s /q "%x"
Điều này đầu tiên sẽ xóa tất cả các tệp khỏi thư mục, sau đó xóa đệ quy tất cả các thư mục lồng nhau, nhưng nhìn chung vẫn giữ nguyên thư mục cấp cao nhất (ngoại trừ nội dung của nó).
Lưu ý rằng trong một tệp batch, bạn cần phải tăng gấp đôi %
trong for
vòng lặp:
del /q destination\*
for /d %%x in (destination\*) do @rd /s /q "%%x"
destination
bằng đường dẫn, có thể sử dụng dấu ngoặc kép xung quanh toàn bộ điều đó nếu cần.
del c:\destination\*.* /s /q
đã làm cho tôi. Tôi hy vọng điều đó cũng hiệu quả với bạn.
del *.*
del "../../server/front-end\*.*"
Tôi nghĩ cách dễ nhất để làm điều đó là:
rmdir /s /q "C:\FolderToNotToDelete\"
Dấu "\" cuối cùng trong đường dẫn là phần quan trọng.
mkdir C:\FolderToNotToDelete
là đủ cho tôi :)
Đúng! Sử dụng Powershell:
powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"
Để xóa tệp:
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) hơi phức tạp một chút. del /s *.*
không thể xóa thư mục, nhưng xóa tệp khỏi tất 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ư sau 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ề cách sử dụng:
mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder
Một tùy chọn một dòng đơn giản là tạo một thư mục trống ở đâu đó trên hệ thống tệp của bạn, sau đó sử dụng ROBOCOPY
( http://technet.microsoft.com/en-us/library/cc733145.aspx ) bằng /MIR
nút chuyển để xóa tất cả các tệp và các thư mục con. Theo mặc định, robocopy không sao chép bảo mật, vì vậy các ACL trong thư mục gốc của bạn sẽ vẫn còn nguyên vẹn.
Cũng có thể muốn đặt giá trị cho công tắc thử lại, /r
, vì số lần thử lại mặc định là 1 triệu.
robocopy "C:\DoNotDelete_UsedByScripts\EmptyFolder" "c:\temp\MyDirectoryToEmpty" /MIR /r:3
Tôi có một thư mục chỉ mục với 33 thư mục cần xóa tất cả các tệp và thư mục con trong chúng. Tôi đã mở một dòng lệnh trong thư mục chỉ mục và sau đó sử dụng các lệnh sau:
for /d in (*) do rd /s /q "%a" & (
md "%a")
Tôi tách chúng thành hai dòng (nhấn enter sau dòng đầu tiên và khi được yêu cầu thêm dòng thứ hai) bởi vì nếu nhập trên một dòng, điều này có thể không hoạt động. Lệnh này sẽ xóa từng thư mục và sau đó tạo một thư mục mới trống, do đó xóa tất cả các tệp và thư mục con trong thư mục gốc.
Điều hướng đến thư mục mẹ
Xóa các thư mục con
/superuser/173859/how-can-i-delete-all-files-subfolders-in-a-given-folder-via-the-command-prompt
pushd
bạn phải sử dụng popd
quá. Thật không may, popd
không hoạt động khi bạn xóa thư mục. Vì vậy, bạn phải làm cd
thay vì pushd
.
hãy thử điều này, điều này sẽ tìm kiếm tất cả MyFolder dưới root dir và xóa tất cả các thư mục có tên MyFolder
for /d /r "C:\Users\test" %%a in (MyFolder\) do if exist "%%a" rmdir /s /q "%%a"