キャデラックはこの質問に答えます。私はそれをオプションのパラメータを取り入れ、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%
)