Не имея возможности проверить, я считаю, что при использовании команды where
, (Windows Vista и далее) , следует игнорировать эти 8.3 имен файлов:
@For /F "EOL=| Delims=" %%G In ('%__AppDir__%where.exe^
C:\mPodcasts\ipod:s*.lnk^
C:\mPodcasts\ipod:ta*.lnk^
C:\mPodcasts\ipod:te*.lnk^
C:\mPodcasts\ipod:tha*.lnk^
2^>NUL') Do @Echo %%G
@Pause
Для В целях вашей предоставленной информации, вышеперечисленное должно работать без изменений. Однако, если ваши каталоги или шаблон файла содержат пробелы, содержащие не более 1027 * символов, вы также можете заключить их в двойные кавычки при необходимости:
@For /F "EOL=| Delims=" %%G In ('%__AppDir__%where.exe^
"C:\mPodcasts\ipod":"s*.lnk"^
"C:\mPodcasts\ipod":"ta*.lnk"^
"C:\mPodcasts\ipod":"te*.lnk"^
"C:\mPodcasts\ipod":"tha*.lnk"^
2^>NUL') Do @Echo %%G
@Pause
Надеюсь, это поможет.
Кстати, это решение также решает другую проблему, упомянутую в вопрос, который вы связали в своем посте выше. Команда where
не выводит расширения «начинающиеся с», она соответствует им правильно. Взяв за основу связанный вопрос «обсуждения», *.htm
соответствует только .htm
расширениям, (не включает .html
) , а *.man
не соответствует .manifest
расширениям.
Если вы хотите sh протестировать вывод непосредственно в окне cmd.exe, то вот однострочная версия:
For /F "EOL=| Delims=" %G In ('%__AppDir__%where.exe C:\mPodcasts\ipod:s*.lnk C:\mPodcasts\ipod:ta*.lnk C:\mPodcasts\ipod:te*.lnk C:\mPodcasts\ipod:tha*.lnk 2^>NUL') Do @Echo %G