我需要删除当前目录中以“foo”开头,后跟日期
的所有文件夹
例如我们有
我可以成功删除一个与当前日期相匹配的文件夹 示例
set FOO_FOLDER=%CD%\foo%datetimef%
echo Y | rd /s/q %FOO_FOLDER%
但是我无法删除所有以foo开头的文件夹。
我已尝试过类似
的内容set OLD_PATTERN="%CD%\foo"
del %OLD_PATTERN%*
我已经用Google搜索并试图关注本论坛中已经提出的一些问题,但这些问题对我没什么帮助。
任何建议对我都有很大的帮助 必须在Windows端批处理脚本。
答案 0 :(得分:11)
您可以使用FOR /D
命令。
for /d %%p in (foo*) do rd /s /q "%%p"
答案 1 :(得分:1)
神奇的for command in dos batch ....
从命令行
for /f "tokens=*" %f in ('dir .\foo* /ad/b') do rd "%f" /s/q
来自批处理文件
for /f "tokens=*" %%f in ('dir .\foo* /ad/b') do rd "%%f" /s/q
/ f在括号中的''中运行命令,并对其进行标记。通过说tokens = *所有文件/目录名称进入一个变量%f
这是一个例子
C:\temp>md foo3
C:\temp>md foo2
C:\temp>md foo1
C:\temp>dir
Volume in drive C is TEST
Volume Serial Number is F47F-AAE1
Directory of C:\temp
18/06/2012 09:42 p.m. <DIR> .
18/06/2012 09:42 p.m. <DIR> ..
18/06/2012 09:42 p.m. <DIR> foo1
18/06/2012 09:42 p.m. <DIR> foo2
18/06/2012 09:42 p.m. <DIR> foo3
0 File(s) 0 bytes
5 Dir(s) 131,009,933,312 bytes free
C:\temp>for /f "tokens=*" %f in ('dir .\foo* /ad/b') do rd "%f" /s/q
C:\temp>rd "foo1" /s/q
C:\temp>rd "foo2" /s/q
C:\temp>rd "foo3" /s/q
C:\temp>dir /ad
Volume in drive C is TEST
Volume Serial Number is F47F-AAE1
Directory of C:\temp
18/06/2012 09:42 p.m. <DIR> .
18/06/2012 09:42 p.m. <DIR> ..
0 File(s) 0 bytes
2 Dir(s) 131,009,933,312 bytes free
C:\temp>
答案 2 :(得分:0)
我知道这是旧的,但我认为值得一提的是FOR命令创建的参数变量用字母而不是数字标识(例如%% G),因此,为了避免参数之间的混淆和路径名格式字母,避免使用字母(a,d,f,n,p,s,t,x,z)作为FOR参数或只选择一个UPPER大小写的FOR参数字母。
格式字母区分大小写,因此使用大写字母也是避免冲突的好方法,例如。 %% A而不是%% a。