Board logo

标题: [文件操作] 如何一键选中指定的几个文件夹,然后反选,然后再删除其它文件夹 [打印本页]

作者: liziyunabcd    时间: 2019-8-23 16:45     标题: 如何一键选中指定的几个文件夹,然后反选,然后再删除其它文件夹

一键选中指定的几个文件夹,然后反选,然后再删除其它文件夹?  

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

有没有搞手能做到啊,找了几天代码也没出来。
作者: flashercs    时间: 2019-8-23 17:16

  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
复制代码

作者: 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://bbs.bathome.net/) Powered by Discuz! 7.2