ฉันใช้ Windows
ฉันต้องการลบไฟล์และโฟลเดอร์ทั้งหมดในโฟลเดอร์โดยการเรียกระบบ
ฉันอาจเรียกแบบนั้น:
>rd /s /q c:\destination
>md c:\destination
คุณรู้วิธีที่ง่ายกว่านี้หรือไม่?
ฉันใช้ Windows
ฉันต้องการลบไฟล์และโฟลเดอร์ทั้งหมดในโฟลเดอร์โดยการเรียกระบบ
ฉันอาจเรียกแบบนั้น:
>rd /s /q c:\destination
>md c:\destination
คุณรู้วิธีที่ง่ายกว่านี้หรือไม่?
คำตอบ:
ไม่ฉันไม่รู้จักหนึ่ง
หากคุณต้องการคงไดเร็กทอรีเดิมไว้ด้วยเหตุผลบางประการ (ACL, & c.) และต้องการล้างข้อมูลนั้นแทนคุณสามารถทำสิ่งต่อไปนี้:
del /q destination\*
for /d %x in (destination\*) do @rd /s /q "%x"
ขั้นแรกนี้จะลบไฟล์ทั้งหมดออกจากไดเร็กทอรีจากนั้นจะลบไดเร็กทอรีที่ซ้อนกันทั้งหมดแบบวนซ้ำ แต่โดยรวมจะเก็บไดเร็กทอรีระดับบนสุดไว้เหมือนเดิม (ยกเว้นเนื้อหา)
โปรดทราบว่าภายในไฟล์แบตช์คุณต้องเพิ่มเป็นสองเท่า%
ภายในfor
ลูป:
del /q destination\*
for /d %%x in (destination\*) do @rd /s /q "%%x"
destination
ตามเส้นทางโดยอาจใช้เครื่องหมายคำพูดรอบ ๆ สิ่งทั้งหมดหากจำเป็น
del c:\destination\*.* /s /q
ทำงานให้ฉัน ฉันหวังว่ามันจะเหมาะกับคุณเช่นกัน
del *.*
del "../../server/front-end\*.*"
ฉันคิดว่าวิธีที่ง่ายที่สุดคือ:
rmdir /s /q "C:\FolderToNotToDelete\"
"\" สุดท้ายในเส้นทางคือส่วนสำคัญ
mkdir C:\FolderToNotToDelete
ก็เพียงพอแล้วสำหรับฉัน :)
ใช่ ใช้ Powershell:
powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"
หากชื่อโฟลเดอร์ย่อยอาจมีช่องว่างคุณต้องล้อมรอบด้วยเครื่องหมายคำพูดที่ใช้ Escape ตัวอย่างต่อไปนี้แสดงสิ่งนี้สำหรับคำสั่งที่ใช้ในไฟล์แบตช์
set targetdir=c:\example
del /q %targetdir%\*
for /d %%x in (%targetdir%\*) do @rd /s /q ^"%%x^"
ในการลบไฟล์:
del PATH_TO_FILE
ในการลบโฟลเดอร์ที่มีไฟล์ทั้งหมดอยู่:
rmdir /s /q PATH_TO_FOLDER
ในการลบไฟล์ทั้งหมดจากโฟลเดอร์ที่ระบุ (ไม่ใช่การลบโฟลเดอร์เอง) นั้นค่อนข้างซับซ้อนเล็กน้อย del /s *.*
ไม่สามารถลบโฟลเดอร์ แต่จะลบไฟล์ออกจากโฟลเดอร์ย่อยทั้งหมด จำเป็นต้องมีสองคำสั่ง:
del /q PATH_TO_FOLDER\*.*
for /d %i in (PATH_TO_FOLDER\*.*) do @rmdir /s /q "%i"
คุณสามารถสร้างสคริปต์เพื่อลบสิ่งที่คุณต้องการ (โฟลเดอร์หรือไฟล์) 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%
ตัวอย่างการใช้งานบางส่วน:
mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder
ตัวเลือกหนึ่งบรรทัดง่ายๆคือสร้างไดเร็กทอรีว่างที่ใดที่หนึ่งบนระบบไฟล์ของคุณจากนั้นใช้ROBOCOPY
( http://technet.microsoft.com/en-us/library/cc733145.aspx ) กับ/MIR
สวิตช์เพื่อลบไฟล์ทั้งหมดและ โฟลเดอร์ย่อย ตามค่าเริ่มต้น robocopy จะไม่คัดลอกความปลอดภัยดังนั้น ACL ในโฟลเดอร์รูทของคุณควรยังคงอยู่
อาจต้องการตั้งค่าสำหรับสวิตช์ลองใหม่ /r
เนื่องจากจำนวนการลองใหม่เริ่มต้นคือ 1 ล้านครั้ง
robocopy "C:\DoNotDelete_UsedByScripts\EmptyFolder" "c:\temp\MyDirectoryToEmpty" /MIR /r:3
ฉันมีโฟลเดอร์ดัชนีที่มี 33 โฟลเดอร์ที่ต้องการลบไฟล์และโฟลเดอร์ย่อยทั้งหมดในนั้น ฉันเปิดบรรทัดคำสั่งในโฟลเดอร์ดัชนีแล้วใช้คำสั่งเหล่านี้:
for /d in (*) do rd /s /q "%a" & (
md "%a")
ฉันแยกมันออกเป็นสองบรรทัด (กด Enter หลังจากบรรทัดแรกและเมื่อถูกขอเพิ่มเติมให้เพิ่มบรรทัดที่สอง) เพราะถ้าป้อนในบรรทัดเดียวอาจไม่ได้ผล คำสั่งนี้จะลบแต่ละไดเร็กทอรีจากนั้นสร้างขึ้นมาใหม่ซึ่งว่างเปล่าดังนั้นจึงลบไฟล์และโฟลเดอร์ย่อยทั้งหมดในไดเร็กทอรีเดิม
ไปที่ไดเร็กทอรีหลัก
ลบโฟลเดอร์ย่อย
/superuser/173859/how-can-i-delete-all-files-subfolders-in-a-given-folder-via-the-command-prompt
pushd
ต้องใช้popd
ด้วย ขออภัยpopd
ไม่สามารถใช้งานได้เมื่อคุณลบไดเร็กทอรี ดังนั้นคุณต้องทำแทนcd
pushd
ลองใช้สิ่งนี้จะค้นหา MyFolder ทั้งหมดภายใต้ root dir และลบโฟลเดอร์ทั้งหมดที่ชื่อ MyFolder
for /d /r "C:\Users\test" %%a in (MyFolder\) do if exist "%%a" rmdir /s /q "%%a"
del .\*
คำสั่งนี้จะลบไฟล์และโฟลเดอร์ทั้งหมดจากการนำทางปัจจุบันในบรรทัดคำสั่งของคุณ