找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 34460|回复: 7

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

[复制链接]
发表于 2014-8-4 23:46:52 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-10-9 20:26 编辑

就是删除目录下的所有文件,除了txt格式的文件。。
有没有这种的命令??
发表于 2014-8-5 00:12:39 | 显示全部楼层
测试无误后去掉第二个 echo
  1. @echo off
  2. for %%a in (*) do if /i %%~xa neq .txt echo del "%%a"
  3. pause
复制代码
 楼主| 发表于 2014-8-5 11:10:08 | 显示全部楼层
测试无误后去掉第二个 echo
CrLf 发表于 2014-8-5 00:12


你这个是用逻辑for循环完成的,有没有可以直接用正则表达式搞掂的?
其实我更想用正则表达式来搞。。。
发表于 2014-8-5 12:18:02 | 显示全部楼层
回复 3# mimixi666


    如果你想用一个简单的del命令来搞定,不行,它不支持。
发表于 2014-8-5 13:02:17 | 显示全部楼层
win7以上系统 试试 powershell
 楼主| 发表于 2014-8-5 14:26:34 | 显示全部楼层
回复  mimixi666


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

哦哦哦,这样啊,好的,谢谢。。
发表于 2014-8-5 23:53:49 | 显示全部楼层
powershell 怎么用呀!
发表于 2014-8-6 00:18:35 | 显示全部楼层
本帖最后由 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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 23:43 , Processed in 0.017305 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表