标题: [文件操作] 批处理如何删除指定目录下除指定类型/扩展名/后缀名之外的其他所有文件? [打印本页]
作者: mimixi666 时间: 2014-8-4 23:46 标题: 批处理如何删除指定目录下除指定类型/扩展名/后缀名之外的其他所有文件?
本帖最后由 pcl_test 于 2016-10-9 20:26 编辑
就是删除目录下的所有文件,除了txt格式的文件。。
有没有这种的命令??
作者: CrLf 时间: 2014-8-5 00:12
测试无误后去掉第二个 echo- @echo off
- for %%a in (*) do if /i %%~xa neq .txt echo del "%%a"
- pause
复制代码
作者: mimixi666 时间: 2014-8-5 11:10
测试无误后去掉第二个 echo
CrLf 发表于 2014-8-5 00:12
你这个是用逻辑for循环完成的,有没有可以直接用正则表达式搞掂的?
其实我更想用正则表达式来搞。。。
作者: DAIC 时间: 2014-8-5 12:18
回复 3# mimixi666
如果你想用一个简单的del命令来搞定,不行,它不支持。
作者: terse 时间: 2014-8-5 13:02
win7以上系统 试试 powershell
作者: mimixi666 时间: 2014-8-5 14:26
回复 mimixi666
如果你想用一个简单的del命令来搞定,不行,它不支持。
DAIC 发表于 2014-8-5 12:18
哦哦哦,这样啊,好的,谢谢。。
作者: lixin004 时间: 2014-8-5 23:53
powershell 怎么用呀!
作者: CrLf 时间: 2014-8-6 00:18
本帖最后由 CrLf 于 2014-8-6 05:40 编辑
回复 7# lixin004
powershell 的 Remove-Item 原生支持通配匹配和排除(-Exclude 支持的是通配而非正则)- Remove-Item * -Exclude *.txt
复制代码
-Exclude 也可以用在其他 cmdlet 上,比如 Get-ChildItem:- Get-ChildItem -Exclude *.txt|Remove-Item
复制代码
当然你也可以用 -notlike 运算符,不过也是通配:- Remove-Item ((Get-ChildItem) -notlike '*.txt')
复制代码
闲得蛋疼可以试试 Where-Object- Get-ChildItem|Where-Object{$_.Extension -ne '.txt'}|Remove-Item
复制代码
不够疼可以再试试 Compare-Object- $All=Get-ChildItem
- $Txt=Get-ChildItem *.txt
- Compare-Object -PassThru $All $Txt|Remove-Item
复制代码
好吧你都看到这里了我就大发慈悲告诉你...其实正则应该用 -notmatch:- (Get-ChildItem *) -notmatch '\.txt$'|Remove-Item
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |