Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   IF EXIST "path/*.ext" работает как IF EXIST "path/*.ext*" (http://forum.oszone.net/showthread.php?t=342335)

lz57005 26-09-2019 12:02 2889662

IF EXIST "path/*.ext" работает как IF EXIST "path/*.ext*"
 
Пример

if exist "*.xls" echo OK

сработает на файле *.xlsx, да и в принципе будет работать как *.xls*, хоть *.xlsxxx ему подкинь

Вопрос как этого избежать? если нужно строгое соответствие расширению файла.

lz57005 26-09-2019 14:27 2889686

отбой, заменил подсчетом в цикле совпадений по расширению.

megaloman 26-09-2019 15:57 2889708

Код:

@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


Iska 26-09-2019 17:25 2889714

Цитата:

Цитата lz57005
IF EXIST "path/*.ext" работает как IF EXIST "path/*.ext*" »

Если у Вас включена поддержка создания коротких имён (8.3 filename - Wikipedia) для длинных имён:
Код:

fsutil.exe 8dot3name query
— то для каждого Вашего .xlsx будет создано короткое имя с расширением xls, для каждого Вашего .xlsxxx будет создано короткое имя с расширением xls:
Скрытый текст

а функции WinAPI FindFirstFile/FindNextFile работают с обеими именами — и с длинными, и с короткими, посему будут найдены и все .xlsx, и все .xlsxxx.

Так что у Вас как раз и наблюдается самое что ни на есть:
Цитата:

Цитата lz57005
строгое соответствие расширению файла. »



Время: 14:14.

Время: 14:14.
© OSzone.net 2001-