이 질문에 대한 캐딜락의 대답. 필자는 옵션 매개 변수를 취하는 배치 스크립트로 작성했으며 OP와 약간 다른 작업을 수행하려는 다른 사용자에게 도움이되는 약간의 구성을 가지고 있습니다. echo 문은 선택적이며 조작에 대한 출력을 원하지 않으면 삭제할 수 있습니다. 버그가 있는지 알려주세요.
이것이 어떻게 작동하는지 샘플
이 예제에는 와일드 카드 옵션이 true로 설정되어 있습니다. 자세한 내용은 아래 코드를 참조하십시오.
dir D:\deltest
Wed 04/03/2013 07:05 PM <DIR> KEEPME
Wed 04/03/2013 07:05 PM <DIR> SAMPLE
Wed 04/03/2013 07:05 PM <DIR> SAMPLE2
delete-sample-dir.bat d:\deltest
Searching for *SAMPLE* in D:\deltest
Deleting the folder D:\deltest\SAMPLE
Deleting the folder D:\deltest\SAMPLE2
dir D:\deltest
Wed 04/03/2013 07:05 PM <DIR> KEEPME
에 대한 코드 delete-sample-dir.bat
@echo off
REM set the name of the directory you would like to target for deleting
set dirname=SAMPLE
REM set the following to "true" if you want to select any directory that includes the name, e.g., a wildcard match
set usewildcard=true
REM --DO NOT EDIT BELOW THIS LINE---------------
REM sentinel value for loop
set found=false
REM If true surround in wildcards
if %usewildcard% == true (
set dirname=*%dirname%*
)
REM use current working directory or take the directory path provided as the first command line parameter
REM NOTE: do not add a trailing backslash, that is added in the for loop, so use "C:" not "C:\"
set directorytosearch=%cd%
if NOT "%1%" == "" (
set directorytosearch=%1%
)
echo Searching for %dirname% in %directorytosearch%
REM /r for files
REM /d for directories
REM /r /d for files and directories
for /d %%i in (%directorytosearch%\%dirname%) do (
IF EXIST %%i (
REM change the sentinel value
set found=true
echo Deleting the folder %%i
REM Delete a folder, even if not empty, and don't prompt for confirmation
rmdir /s /q %%i
)
)
REM logic to do if no files were found
if NOT "%found%" == "true" (
echo No directories were found with the name of %dirname%
)