Одна из проблем, связанных с использованием метода %%~si\NUL
, заключается в том, что существует вероятность, что он угадает неправильно. Возможно, имя файла будет сокращено до неправильного файла. Я не думаю, что %%~si
разрешает имя файла 8.3, но угадывает его, но использует манипуляции со строками для сокращения пути к файлу Я считаю, что если у вас есть похожие пути к файлам, это может не сработать.
Альтернативный метод:
dir /AD %F% 2>&1 | findstr /C:"Not Found">NUL:&&(goto IsFile)||(goto IsDir)
:IsFile
echo %F% is a file
goto done
:IsDir
echo %F% is a directory
goto done
:done
Вы можете заменить (goto IsFile)||(goto IsDir)
другими пакетными командами:
(echo Is a File)||(echo is a Directory)