Я хочу получить имя файла и назначить его переменной, чтобы потом использовать его в скрипте.
set directoryName = dir Docum?nt*
echo %directoryName%
Но как только я запускаю командный файл, все, что я получаю, это.
D:\ >a.bat
D:\ >set directoryName = dir Docum?nt*
D:\ >echo
ECHO is on.
Как я могу убедиться, что моей переменной присвоено значение, то есть имя каталога, чтобы я мог начать писать сценарий дальше.
мой a.bat
содержит:
set directoryName=dir Docum?nt*
echo %directoryName%
После удаления пробелов:
D:\Workspace>set directoryName=dir Docum?nt*
D:\Workspace>echo dir Docum?nt*
dir Docum?nt*
Я предполагаю, что vairbale было назначено целое значение вместе с ключевым словом команды вместо результатов. Я ожидаю, что вывод будет имя каталога, т.е.Documentation
set directoryName=dir Docum?nt*
просто так. У вас есть пробел, поэтому просто удалите его ... Дайте мне знать, если это поможет, и я добавлю ответ.Ответы:
У вас есть пробел до и после знака равенства для установки переменной, просто удалите его и, например, используйте метод ниже.
Неправильно
set directoryName = dir Docum?nt*
Правильный
set directoryName=dir Docum?nt*
Неявный для цикла
Рекурсивный цикл FOR
Дополнительные ресурсы
источник
Если вам нужно установить подходящее имя каталога
Docum?nt*
, то вам нужно:Если маске соответствует несколько каталогов, вы получите только одно совпадение. Если вам нужна переменная для хранения списка соответствующих каталогов, то вам нужно будет использовать
for /f
.источник
Пробелов нет
Если вам нужно использовать пробел в именах, поместите их в этот формат:
Это либо "", либо нет пробелов .
источник
Я ожидаю, что вывод будет имя каталога, т.е.
Documentation
Вы не получите
Documentation
в качестве вывода, если не выполните команду, которую вы сохранили в переменной.Используйте следующий пакетный файл (test.cmd):
Пример вывода:
Дальнейшее чтение
источник