Пакетный файл не выполняет цикл для нефайловых элементов в списке

Пакетный файл не выполняет цикл для нефайловых элементов в списке

В Windows 10 с помощью команды с повышенными привилегиями я запускаю следующий пакетный файл:

@echo off
cls
for /f "tokens=1-6 delims=," %%G in ("3D Objects,Documents,Downloads,Music,Pictures,Videos") do (
echo %%G
)

Я ожидаю, что он перечислит каждый из этих шести пунктов. Вместо этого он перечисляет только первый (3D Objects), а затем останавливается. Использование "Tokens" не имеет особого значения, а "delims" не работает так, как я думал.

Вопрос:Ошибаюсь ли я, думая, что он FORможет обрабатывать элементы списка, разделенные запятыми?

решение1

Я не думаю, что это работает так, как вы ожидаете для списка, не являющегося файлом, потому что, как указано в for /?...

  • FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
    FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
    FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
    

Я полагаю, что это означает, что FOR /Fдескрипторы либо command, string, или file-set, что, как я предполагаю file-set, означает фактический файл. Если это так, то это означает, что помещая туда список не файлов, он интерпретируется как строка, которую и delimsне tokensможет разобрать или итерировать.


Чтобы решить эту проблему, поместите список не файлов в обычный список.длявыполните цикл без использования tokensили delimsи убедитесь, что значения, содержащие пробел, заключены в двойные кавычки.

@echo off
cls
for %%G in ("3D Objects",Documents,Downloads,Music,Pictures,Videos) do (
echo %%~G
)

Вы можете заключить все значения в двойные кавычки и использовать ~тильду [ ] в заполнителе переменной, чтобы извлечь двойные кавычки из выходного значения, получив желаемый вывод без двойных кавычек.

@echo off
cls
for %%G in ("3D Objects","Documents","Downloads","Music","Pictures","Videos") do (
echo %%~G
)

Выход

3D Objects
Documents
Downloads
Music
Pictures
Videos

Поддерживающие ресурсы

Связанный контент