标题: [文件操作] 如何一键选中指定的几个文件夹,然后反选,然后再删除其它文件夹 [打印本页]
作者: liziyunabcd 时间: 2019-8-23 16:45 标题: 如何一键选中指定的几个文件夹,然后反选,然后再删除其它文件夹
一键选中指定的几个文件夹,然后反选,然后再删除其它文件夹?
有很多个文件夹,名子很乱,而我只想要几个指定名子的文件夹,然后把其它的全部删除。比如说,我只想要名为“MP4”、“MP3”的文件夹,其它的全删除。
有没有搞手能做到啊,找了几天代码也没出来。
作者: flashercs 时间: 2019-8-23 17:16
- @echo off
- for /f "delims=" %%A in ('2^>nul,dir /ad /b^|findstr /eiv "\.mp4 \.mp3"') do (
- echo rd /s /q "%%A"
- )
- pause
复制代码
作者: Batcher 时间: 2019-8-23 18:12
回复 2# flashercs
mp前面的那个点,不需要吧。
作者: flashercs 时间: 2019-8-23 19:21
回复 3# Batcher
需要转义. 的;否则将匹配 "xxx.abcMp4"
作者: Batcher 时间: 2019-8-23 19:48
回复 4# flashercs
既然是文件夹为啥会有这种情况呢,精确匹配文件夹的名字就行了吧。
作者: flashercs 时间: 2019-8-23 22:02
回复 5# Batcher
文件夹也可以命名为 1.mp4 2.mp4吧?
作者: Batcher 时间: 2019-8-23 22:22
回复 6# flashercs
看楼主的描述,这样的文件夹是需要删除的吧。
作者: /zhqsystem/zhq 时间: 2019-8-24 22:27
@Echo Off
cd/d "%~f1"||cd/d "%~f1\.."||cd/d "%~f0\.."||rem 自动检测拖拽或批处理路径谨慎使用[拖拽时是文件夹默认子目录.文件时默认跳转所在目录]根目录识别会出错
for /f "delims=" %%i in ('dir/ad/b ".\*.*"')do (
rem,说明所有代码谨慎修改+14对应过滤行如若修改请调节该数字,%~f0可引入其他文本自行替换
set "delete=True"&&for /f "delims=" %%z in ('more +14 "%~f0"')do if /i "%%~nxi"=="%%~nxz" set "delete="
if defined delete (
echo,删除: %%~nxi
)else (
echo,保留: %%~nxi
)
)
pause
goto:eof
:这里以下填入对应的文件夹自动过滤,不包含此行[结尾不能带有空格等]一定要注意行数
MP3
MP4
作者: netdzb 时间: 2019-8-25 10:46
回复 1# liziyunabcd
shell里用grep就可以了。
作者: liziyunabcd 时间: 2019-10-6 13:53
回复 2# flashercs
感谢flashercs幸苦写出代码,我去测试一下,
作者: liziyunabcd 时间: 2019-10-6 13:54
回复 8# /zhqsystem/zhq
感谢/zhqsystem/zhq,我去测试一下
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |