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

[文件操作] 如何一键选中指定的几个文件夹,然后反选,然后再删除其它文件夹

[复制链接]
发表于 2019-8-23 16:45:54 | 显示全部楼层 |阅读模式
一键选中指定的几个文件夹,然后反选,然后再删除其它文件夹?  

有很多个文件夹,名子很乱,而我只想要几个指定名子的文件夹,然后把其它的全部删除。比如说,我只想要名为“MP4”、“MP3”的文件夹,其它的全删除。

有没有搞手能做到啊,找了几天代码也没出来。
发表于 2019-8-23 17:16:06 | 显示全部楼层
  1. @echo off
  2. for /f "delims=" %%A in ('2^>nul,dir /ad /b^|findstr /eiv "\.mp4 \.mp3"') do (
  3.   echo rd /s /q "%%A"
  4. )
  5. pause
复制代码
发表于 2019-8-23 18:12:16 | 显示全部楼层
回复 2# flashercs


    mp前面的那个点,不需要吧。
发表于 2019-8-23 19:21:02 | 显示全部楼层
回复 3# Batcher


    需要转义. 的;否则将匹配 "xxx.abcMp4"
发表于 2019-8-23 19:48:00 | 显示全部楼层
回复 4# flashercs


    既然是文件夹为啥会有这种情况呢,精确匹配文件夹的名字就行了吧。
发表于 2019-8-23 22:02:21 | 显示全部楼层
回复 5# Batcher


    文件夹也可以命名为 1.mp4 2.mp4吧?
发表于 2019-8-23 22:22:40 | 显示全部楼层
回复 6# flashercs


    看楼主的描述,这样的文件夹是需要删除的吧。
发表于 2019-8-24 22:27:36 | 显示全部楼层
@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
发表于 2019-8-25 10:46:54 | 显示全部楼层
回复 1# liziyunabcd

shell里用grep就可以了。
 楼主| 发表于 2019-10-6 13:53:33 | 显示全部楼层
回复 2# flashercs


    感谢flashercs幸苦写出代码,我去测试一下,
 楼主| 发表于 2019-10-6 13:54:37 | 显示全部楼层
回复 8# /zhqsystem/zhq


    感谢/zhqsystem/zhq,我去测试一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 11:45 , Processed in 0.020398 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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