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

[文件操作] 批处理如何查找排除指定扩展名后其它的所有扩展名

[复制链接]
发表于 2022-2-19 19:27:59 | 显示全部楼层 |阅读模式
一个目录,下面有很的子目录和文件。
比如,我有一个
扩展名.txt
.MP4
.JPG
.TXT
然后,我想根据这个扩展名.txt找到这个目录及所有子目录下,不包含扩展名.txt中指定的扩展名的文件,不需要记录所有文件名,只要记录他们的扩展名,相同的扩展名只需要记录一次就好了。
简单点讲,就是要找出所有我指定扩展名以外的所有扩展名。文件有可能存在隐藏和只读属性。

谢谢!
发表于 2022-2-19 19:57:26 | 显示全部楼层
本帖最后由 idwma 于 2022-2-19 20:25 编辑
  1. @echo off
  2. for /f "delims=" %%i in (扩展名.txt) do set %%i=0
  3. for /f "delims=" %%i in ('dir /a-d /b /s "一个目录"') do if not defined %%~xi set %%xi=1
  4. for /f "delims==" %%i in ('set .^|findstr "=1"') do echo;%%i
  5. pause
复制代码
发表于 2022-2-19 21:14:20 | 显示全部楼层
楼上厉害!
发表于 2022-2-19 22:24:54 | 显示全部楼层
  1. @echo off
  2. PowerShell "dir 'E:\Test' -Recurse -Force -Exclude @((gc 扩展名.txt) -replace '^', '*') | ?{$_ -is [IO.FileInfo]} | group Extension | forEach{$_.Name}"
  3. pause
复制代码
发表于 2022-2-20 08:52:39 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2022-2-20 09:30 编辑

根据2楼的思路也可以这样,减少一个循环:
  1. @echo off
  2. for /f "delims=" %%a in (扩展名.txt) do set %%a=0
  3. for /f "delims=" %%i in ('dir /a-d /b /s') do (
  4.     if not defined %%~xi (
  5.         echo,%%~xi
  6.         set %%~xi=0
  7.     )
  8. )
  9. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 11:24 , Processed in 0.018386 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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