ser*_*dar 48 windows batch command-line
假设D:
驱动器中有一些文件夹:
D:\Air
D:\Abonden
D:\All
D:\Whatever
Run Code Online (Sandbox Code Playgroud)
我想删除所有以“A”开头的文件夹(包括所有子文件夹和文件)。我试过这个命令:
rmdir D:\A* /s /q
Run Code Online (Sandbox Code Playgroud)
不过我收到一个错误:(
文件名、目录名或卷标语法不正确。
该del
命令适用于*
,但我也需要删除文件夹。
有没有办法通过rmdir
命令来实现?
Faz*_*r87 37
cd c:\temp
for /f %i in ('dir /a:d /s /b A*') do rd /s /q %i
Run Code Online (Sandbox Code Playgroud)
使用它来测试:
for /f %i in ('dir /a:d /s /b A*') do echo rd /s /q %i
Run Code Online (Sandbox Code Playgroud)
这会将要运行的命令输出到命令提示符中,并允许您查看发生了什么。
请记住,这还将搜索子文件夹,例如“C:\temp\jjj\aaa”,并会删除 aaa 文件夹。如果您只想查看顶级文件夹“C:\temp\aaa”,则删除"/s"
从命令中。
关键是 A*,您可以在其中放入搜索字符串。这将接受通配符,例如aaa*
,aaa*
并且*aaa*
如果您愿意的话。
and*_*415 30
该rmdir
/rd
命令本身并不支持通配符(即,*
和?
)。您可以通过将其包装在一个for
循环中。
for /d %G in ("X:\A*") do rd /s /q "%~G"
Run Code Online (Sandbox Code Playgroud)
注意在删除文件和文件夹时,您可能希望将rd
命令替换为echo
first。通过这种方式,您可以确保实际上不应删除的任何内容。
为了删除匹配不同模式的多个文件夹,语法没有太大不同。正如@dbenham 正确指出的那样,一行命令就足够了。您还可以指定不同的路径:
for /d %G in ("X:\A*","Y:\Whatever\B*","Z:\C?D") do rd /s /q "%~G"
Run Code Online (Sandbox Code Playgroud)
如果要检查特定文件夹是否存在,可以使用以下命令:
dir /b /a:d "X:\A*" >nul 2>&1 && echo Folders exist. || echo No folders found.
Run Code Online (Sandbox Code Playgroud)
JJS*_*JJS 20
怎么还没有人告诉 OP 关于 forfiles 的事?!
forfiles /P D:\ /M A* /C "cmd /c if @isdir==TRUE rmdir /s /q @file"
/P 是路径名 - 搜索开始的地方 /M 是搜索掩码,查找以 A 开头的文件 /C 是要执行的命令 /S 是递归子文件夹(这里没有包括,因为 op 没有问)
小智 15
adn31415 答案是正确的,但如果您将其放入批处理或 cmd 脚本中,则会中断。我敲了几个小时的头,直到我发现这就是你使用它的方式。
在 DOS 命令窗口中:
for /d %G in ("X:\A*") do rd /s /q "%~G"
Run Code Online (Sandbox Code Playgroud)
在批处理或 cmd 脚本中:
for /d %%G in ("X:\A*") do rd /s /q "%%~G"
Run Code Online (Sandbox Code Playgroud)
如果要将其放入“.bat”或“.cmd”文件,则需要将“%”字符加倍。
归档时间: |
|
查看次数: |
88839 次 |
最近记录: |