1

Может кто-нибудь объяснить эту разницу.

Дан каталог, который содержит следующие файлы /dirs:

09-Sep-16  14:14    <DIR>          ignoreMe
09-Sep-16  14:13    <DIR>          ignore.me
09-Sep-16  14:13                 0 myfile1.txt
09-Sep-16  14:13                 0 myfile2.txt

Команда: for %i in (*) do echo %i выдаст:

myfile1.txt
myfile2.txt

(это означает, что он выводит только файлы, а не каталоги)

Однако эта команда: dir * выведет:

ignoreMe
ignore.me
myfile1.txt
myfile2.txt

(имеется ввиду вывод файлов и директорий)

Обратите внимание, что один и тот же GLOB используется в обоих случаях, но они дают разные результаты. Разве это не должно быть последовательным?

Может кто-нибудь объяснить почему?

1 ответ1

1

У вас есть следующие варианты:

  • файлы: for %i in (*) do @echo %i
  • подкаталоги: for /D %i in (*) do @echo %i

Вы не можете иметь оба результата в одном операторе for , потому что subdirs - это ключ (/D) внутри команды, который изменяет его вывод.

Для дальнейших объяснений введите for /? в cmd.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .