我正在嘗試編寫一個簡單的批處理文件,它將遞歸地查找和刪除文件夾。但是下面的腳本不在子文件夾下查看。想知道如何做到這一點?使用批處理文件遞歸地查找和刪除文件夾
@echo off
cd /d "C:\"
for /d %%i in (temp) do rd /s "%%i"
pause
謝謝!
我正在嘗試編寫一個簡單的批處理文件,它將遞歸地查找和刪除文件夾。但是下面的腳本不在子文件夾下查看。想知道如何做到這一點?使用批處理文件遞歸地查找和刪除文件夾
@echo off
cd /d "C:\"
for /d %%i in (temp) do rd /s "%%i"
pause
謝謝!
for /d /r "c:\" %%a in (temp\) do if exist "%%a" echo rmdir /s /q "%%a"
下
c:\
測試用於
temp
文件夾的存在
對於每個文件夾(/d
),遞歸(/r
),並且如果它存在,刪除它
目錄去除命令僅呼應到控制檯。如果輸出正確,請刪除echo
命令
謝謝MC,我認爲這是工作,但小呃。當我運行以下命令:@echo off cd/d「C:\」 for/d/r「c:\」%% a in(temp1 \)do if exists「%% a」echo rmdir/S/Q「%% a」 pause – rasuajak 2014-10-09 17:19:52
謝謝MC,我認爲這是工作,但小呃。當我運行以下內容: @echo off for/d/r「c:\」%% a在(temp1 \)中如果存在「%% a」echo rmdir/S/Q「%% a」 它只是模擬而不是deletig所述的 「TEMP1」 的文件夾,其是在c: 輸出: C:\> C:\ TestScripts \好\工作\ find_delete_temp_workarea.bat 命令rmdir/S/Q「 c:\ temp1 \「 rmdir/S/Q」c:\ test3 \ temp1 \「 rmdir/S/Q」c:\ tmp \ temp1 \「 – rasuajak 2014-10-09 17:27:53
@rasuajak,首先閱讀答案的最後一行。其次,將結尾反斜槓保留在文件夾的名稱中以避免「if exists」可能與具有相同名稱的文件相匹配 – 2014-10-09 17:30:10
的/S
開關rd
意味着
/S Removes all directories and files in the specified directory
in addition to the directory itself. Used to remove a directory
tree.
這並不意味着它會搜索所有目錄具有指定名稱尋找一個和刪除它們。
換句話說,如果從C:\Temp
文件夾運行rd /S Test
,它會刪除C:\Temp\Test\*.*
,包括C:\Temp\Test
(任何名稱)的所有子目錄。它確實會刪除C:\Temp\AnotherDir\Test
,因爲這不是C:\Temp\Test
的子文件夾。
感謝但在上面的例子中,如果我從C:\而不是C運行「rd/S Test」 :\ Temp,是不是所有在C:\下的「Test」文件夾的getrid? – rasuajak 2014-10-09 17:06:13
然後,它會刪除'C:\ Test \ *。*'和子文件夾,但不會刪除'C:\ Dummy \ Test \',就像我所說的那樣。 :-) – 2014-10-09 18:47:04
遞歸rd選項使用大寫'S'。這在你的腳本中看起來像是一個小寫的''。 – neilh 2014-10-09 16:36:46
@neilh:除非命令使用大寫和小寫來表示不同的東西,否則小寫字母可以在大多數DOS/Windows命令下正常工作。在'rd'的情況下,兩種情況都是一樣的。 – 2014-10-09 16:41:39
謝謝你們,但試過大寫字母(S)和大寫字母(RD)都沒有幫助.. – rasuajak 2014-10-09 16:49:13