@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