Командный процессор Windows cmd.exe
, обрабатывающий пакетный файл, не заменяет строки аргументов, содержащие подстановочный знак, всеми файлами / папками, найденными в файловой системе, которые соответствуют шаблону подстановочного знака, как это делают интерпретаторы оболочки Linux, кроме строки аргумента, содержащей подстановочный знак заключен в '
. В пакетном файле должен использоваться код для получения имен файлов / папок, соответствующих шаблону с подстановочными знаками.
set "HOUSE=GREENVILLA"
set "NUMBER=10"
set "HOUSE_NAME="
for %%I in ("\\servername\c\house\name\%HOUSE%-%NUMBER%.*.y") do set "HOUSE_NAME=%%I"
if defined HOUSE_NAME echo "%HOUSE_NAME%"
Последнему найденному не скрытому файлу в каталоге \\servername\c\house\name
, соответствующему шаблону с подстановочными знаками GREENVILLA-10.*.y
назначается Переменная окружения HOUSE_NAME
с полным путем из-за того, что шаблон подстановки указан с путем к папке.
Какой последний найденный файл соответствует шаблону подстановки, определяется файловой системой. NTFS возвращает список файлов, соответствующих шаблону, отличному от дисков FAT16, FAT32 и exFAT. Тем не менее, я предполагаю, что каталог всегда содержит только один файл, соответствующий шаблону подстановки.
Чтобы понять используемые команды и их работу, откройте окно командной строки , выполните следующие команды: и внимательно прочитайте все справочные страницы, отображаемые для каждой команды.
echo /?
for /?
if /?
set /?