标题: [文件操作] 批处理如何查找排除指定扩展名后其它的所有扩展名 [打印本页]
作者: thp2008 时间: 2022-2-19 19:27 标题: 批处理如何查找排除指定扩展名后其它的所有扩展名
一个目录,下面有很的子目录和文件。
比如,我有一个
扩展名.txt
.MP4
.JPG
.TXT
然后,我想根据这个扩展名.txt找到这个目录及所有子目录下,不包含扩展名.txt中指定的扩展名的文件,不需要记录所有文件名,只要记录他们的扩展名,相同的扩展名只需要记录一次就好了。
简单点讲,就是要找出所有我指定扩展名以外的所有扩展名。文件有可能存在隐藏和只读属性。
谢谢!
作者: idwma 时间: 2022-2-19 19:57
本帖最后由 idwma 于 2022-2-19 20:25 编辑
- @echo off
- for /f "delims=" %%i in (扩展名.txt) do set %%i=0
- for /f "delims=" %%i in ('dir /a-d /b /s "一个目录"') do if not defined %%~xi set %%xi=1
- for /f "delims==" %%i in ('set .^|findstr "=1"') do echo;%%i
- pause
复制代码
作者: Fit 时间: 2022-2-19 21:14
楼上厉害!
作者: WHY 时间: 2022-2-19 22:24
- @echo off
- PowerShell "dir 'E:\Test' -Recurse -Force -Exclude @((gc 扩展名.txt) -replace '^', '*') | ?{$_ -is [IO.FileInfo]} | group Extension | forEach{$_.Name}"
- pause
复制代码
作者: qixiaobin0715 时间: 2022-2-20 08:52
本帖最后由 qixiaobin0715 于 2022-2-20 09:30 编辑
根据2楼的思路也可以这样,减少一个循环:- @echo off
- for /f "delims=" %%a in (扩展名.txt) do set %%a=0
- for /f "delims=" %%i in ('dir /a-d /b /s') do (
- if not defined %%~xi (
- echo,%%~xi
- set %%~xi=0
- )
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |