@AlexandrMa

Как с помощью for добиться такого же результата, что и командой dir?

Есть отлично работающая команда dir /s /b
Выводит папки и все файлы в папке в виде полного пути.

C:\myfolder\1\1.JPG
C:\myfolder\1\2.JPG
C:\myfolder\1\3.JPG
C:\myfolder\2\1.JPG
C:\myfolder\2\2.JPG
C:\myfolder\2\3.JPG


Нужны еще кое какие данные, в результате чего приходится перейти на команду for.
Вложенность может быть как 1 так и 3 уровня.

Вопрос. Как вывести такой же результат, как в примере, но только в помощью for?
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 3
@res2001
Developer, ex-admin
Я бы предложил запихнуть dir в for /f и в for обрабатывать вывод dir, добавляя нужную информацию:
for /f "tokens=* delims" %%a in ('dir /s /b *') in (
   rem Тут можно писать любой другой код. Имя текущего файла в %%a
   echo %%~a
)
Ответ написан
wisgest
@wisgest
Не ИТ-специалист
Справку пробовали почитать: for /??

Выводит папки и все файлы в папке в виде полного пути.

Файлы— for с ключом /r. Если нужны подкаталоги, используйте ключи /d /r. В одном списке без перехвата вывода команды dir, скорее всего, нельзя.
Ответ написан
Комментировать
@Olgeir
Ребята предостерегаю от использования многострочных конструкций в скобках
for /f "tokens=* delims" %%a in ('dir /s /b *') in (
тут много много строк
)
Я получил целый ряд глюков при использовании такой конструкции. В какой то момент скрипт полностью ломался если внутри ( ) добавить пустую строку или закомментировать одну из присутствующих.
Переписал всё на подпрограммы и глюки ушли.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы