Показать полную графическую версию : IF EXIST "path/*.ext" работает как IF EXIST "path/*.ext*"
Пример
if exist "*.xls" echo OK
сработает на файле *.xlsx, да и в принципе будет работать как *.xls*, хоть *.xlsxxx ему подкинь
Вопрос как этого избежать? если нужно строгое соответствие расширению файла.
отбой, заменил подсчетом в цикле совпадений по расширению.
megaloman
26-09-2019, 15:57
@Echo Off
cls
Set "BoxIn=Z:\Box_In"
Set "Ext=xls"
FOR %%f IN ("%BoxIn%\*.%Ext%") DO If /I "%%~xf"==".%Ext%" Echo %%f
pause
Exit /B
IF EXIST "path/*.ext" работает как IF EXIST "path/*.ext*" »
Если у Вас включена поддержка создания коротких имён (8.3 filename - Wikipedia (https://en.wikipedia.org/wiki/8.3_filename)) для длинных имён:
fsutil.exe 8dot3name query
— то для каждого Вашего .xlsx будет создано короткое имя с расширением xls, для каждого Вашего .xlsxxx будет создано короткое имя с расширением xls:
https://i.imgur.com/4AwnY7C.png
а функции WinAPI FindFirstFile/FindNextFile работают с обеими именами — и с длинными, и с короткими, посему будут найдены и все .xlsx, и все .xlsxxx.
Так что у Вас как раз и наблюдается самое что ни на есть:
строгое соответствие расширению файла. »
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.