![删除文件的命令(除以另一个目录中的前缀开头的文件外)](https://linux22.com/image/1480876/%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%E7%9A%84%E5%91%BD%E4%BB%A4%EF%BC%88%E9%99%A4%E4%BB%A5%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E5%89%8D%E7%BC%80%E5%BC%80%E5%A4%B4%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%96%EF%BC%89.png)
假设我当前位于 c:\test\user,但我需要删除其他目录中的某些文件,例如 C:\testb\data\diff。我需要删除的文件是那些不以 AD_ 开头的文件。是否可以在一个命令行语句中执行此操作?
答案1
MS DOS 命令删除文件(除以其他目录的前缀开头的文件外)
我需要删除的文件不是以 AD_ 开头的文件。是否可以在一个命令行语句中完成此操作?
命令行从特定文件夹中删除特定文件名模式以外的内容
只需从命令行运行以下语句并复制粘贴即可。这使用为/F循环目录通过管道传输到查找字符串命令指定要匹配排除的模式。
FOR /F "TOKENS=*" %A IN ('DIR /A-D /B "C:\testb\data\diff" ^| FINDSTR /I /V "AD_"') DO DEL /Q /F "C:\testb\data\diff\%~A"
如果您想明确设置要从变量中删除的目录以及要排除的文件模式,下面是一个以这种方式执行的示例。
SET DelDir=C:\testb\data\diff
SET DelPattern=AD_
FOR /F "TOKENS=*" %A IN ('DIR /A-D /B "%DelDir%" ^| FINDSTR /I /V "%DelPattern%"') DO DEL /Q /F "%DelDir%\%~A"