我正在尝试编写一个简单的批处理文件,它将递归地查找和删除文件夹。但是下面的脚本不在子文件夹下查看。想知道如何做到这一点?使用批处理文件递归地查找和删除文件夹
@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