[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何删除指定目录下除指定类型/扩展名/后缀名之外的其他所有文件?

本帖最后由 pcl_test 于 2016-10-9 20:26 编辑

就是删除目录下的所有文件,除了txt格式的文件。。
有没有这种的命令??

测试无误后去掉第二个 echo
  1. @echo off
  2. for %%a in (*) do if /i %%~xa neq .txt echo del "%%a"
  3. pause
复制代码

TOP

测试无误后去掉第二个 echo
CrLf 发表于 2014-8-5 00:12


你这个是用逻辑for循环完成的,有没有可以直接用正则表达式搞掂的?
其实我更想用正则表达式来搞。。。

TOP

回复 3# mimixi666


    如果你想用一个简单的del命令来搞定,不行,它不支持。

TOP

win7以上系统 试试 powershell

TOP

回复  mimixi666


    如果你想用一个简单的del命令来搞定,不行,它不支持。
DAIC 发表于 2014-8-5 12:18

哦哦哦,这样啊,好的,谢谢。。

TOP

powershell 怎么用呀!

TOP

本帖最后由 CrLf 于 2014-8-6 05:40 编辑

回复 7# lixin004


powershell 的 Remove-Item 原生支持通配匹配和排除(-Exclude 支持的是通配而非正则)
  1. Remove-Item * -Exclude *.txt
复制代码
-Exclude 也可以用在其他 cmdlet 上,比如 Get-ChildItem:
  1. Get-ChildItem -Exclude *.txt|Remove-Item
复制代码
当然你也可以用 -notlike 运算符,不过也是通配:
  1. Remove-Item ((Get-ChildItem) -notlike '*.txt')
复制代码
闲得蛋疼可以试试 Where-Object
  1. Get-ChildItem|Where-Object{$_.Extension -ne '.txt'}|Remove-Item
复制代码
不够疼可以再试试 Compare-Object
  1. $All=Get-ChildItem
  2. $Txt=Get-ChildItem *.txt
  3. Compare-Object -PassThru $All $Txt|Remove-Item
复制代码
好吧你都看到这里了我就大发慈悲告诉你...其实正则应该用 -notmatch:
  1. (Get-ChildItem *) -notmatch '\.txt$'|Remove-Item
复制代码

TOP

返回列表