ฉันต้องการลบไฟล์และโฟลเดอร์ย่อยทั้งหมดในไฟล์แบตช์ใน Windows 7 และเก็บโฟลเดอร์ด้านบนไว้ โดยทั่วไปการล้างโฟลเดอร์ คำสั่งบรรทัดคำสั่งคืออะไร
ntvdm
แต่เป็นระบบ 64 บิตได้รับส่วนแบ่งการตลาดมันเริ่มไม่เกี่ยวข้องมากขึ้น
ฉันต้องการลบไฟล์และโฟลเดอร์ย่อยทั้งหมดในไฟล์แบตช์ใน Windows 7 และเก็บโฟลเดอร์ด้านบนไว้ โดยทั่วไปการล้างโฟลเดอร์ คำสั่งบรรทัดคำสั่งคืออะไร
ntvdm
แต่เป็นระบบ 64 บิตได้รับส่วนแบ่งการตลาดมันเริ่มไม่เกี่ยวข้องมากขึ้น
คำตอบ:
คุณสามารถทำได้โดยใช้del
และ/S
ตั้งค่าสถานะ (เพื่อบอกให้ลบไฟล์ทั้งหมดออกจากไดเรกทอรีย่อยทั้งหมด):
del /S C:\Path\to\directory\*
ทางออกที่ดีที่สุด: เช่นฉันต้องการลบไฟล์และไดเรกทอรีย่อยทั้งหมดของไดเรกทอรีหลักให้พูดว่า "C: \ Users \ Desktop \ New folder \" วิธีที่ง่ายคือการสร้างแบตช์ไฟล์ที่มีสามคำสั่งด้านล่าง
cd C: \ Users \ Desktop \ New โฟลเดอร์ \
del * / S / Q
rmdir / S / Q "C: \ Users \ Desktop \ New โฟลเดอร์ \"
ที่นี่ก่อนจะทำความสะอาดไฟล์ทั้งหมดในไดเรกทอรีย่อยทั้งหมดแล้วล้างไดเรกทอรีย่อยที่ว่างเปล่าทั้งหมด เนื่องจากไดเรกทอรีการทำงานปัจจุบันคือไดเรกทอรีหลักเช่น "\ New folder" คำสั่ง rmdir จึงไม่สามารถลบไดเรกทอรีนี้ได้
rmdir
คำสั่งจะลบNew folder
นำทางไปยังไดเรกทอรีหลัก:
pushd "Parent Directory"
ลบโฟลเดอร์ย่อย:
rd /s /q . 2>nul
pushd
ไม่ได้เพิ่มอะไรที่นี่ซึ่งcd
ยังไม่ได้ทำ
rmdir /s path-to-folder
จะลบโฟลเดอร์ที่มีทุกสิ่งในนั้น แต่ผู้ถามต้องการทราบวิธีการลบทุกอย่างในไดเรกทอรีการทำงาน
rmdir "c:\pathofyourdirectory" /q /s
อย่าลืมที่จะใช้คำพูดและ/q /s
มันจะลบที่เก็บทั้งหมดและโดยไม่ต้องแจ้งให้
คุณสามารถใช้ rmdir เพื่อลบไฟล์และโฟลเดอร์ย่อยเช่นนี้:
rmdir /s/q MyFolderPath
อย่างไรก็ตามมันจะเร็วกว่ามากโดยเฉพาะเมื่อคุณมีโฟลเดอร์ย่อยจำนวนมากในโครงสร้างของคุณที่จะใช้ del ก่อน rmdir เช่นนี้
del /f/s/q MyFolderPath > nul
rmdir /s/q MyFolderPath
rmdir
คำสั่ง (ทั้งสองเหมือนกัน) จะลบโฟลเดอร์หลัก นี่ไม่ใช่คำตอบสำหรับคำถาม ทำไมคนไม่อ่าน?
หากคุณต้องการลบไฟล์ทั้งหมดในโฟลเดอร์รวมถึงโฟลเดอร์ย่อยทั้งหมดและไม่ต้องใช้เงื่อนไขข้อผิดพลาดบางอย่างเพื่อให้โฟลเดอร์รูทยังคงอยู่ (เหมือนที่ฉันเห็นในคำตอบอื่น) คุณอาจมีแบตช์ไฟล์ดังนี้:
@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
)
)
แล้วคุณจะเรียกมันว่า:
empty_my_folder.bat "C:\whatever\is\my folder"
คุณสามารถทำได้อย่างรวดเร็วและง่ายดายโดยใส่คำแนะนำทั้งสามนี้ลงในไฟล์ bat ของคุณ:
mkdir empty_folder
robocopy /mir empty_folder "path_to_directory"
rmdir empty_folder
สิ่งนี้ใช้ได้ผลดีกว่าสำหรับฉันเมื่อฉันมีช่องว่างในชื่อโฟลเดอร์
@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
)
ในการลบไฟล์:
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
นี่คือสิ่งที่ได้ผลสำหรับฉัน
del *
Y
สำหรับใช่