Что-то вроде dir /b
команды, но мне нужны также скрытые и системные файлы. Встроенная команда dir не позволяет перечислять такие «скрытые» файлы вместе с остальными, и мне нужно использовать /s
полный путь, что, конечно, нерекурсивно.
Я также играл с версией ls
команды для Windows, и там тоже ничего не вышло. Чтобы отобразить полный путь, необходимо добавить звездочку ( mydir\*
) в конце каталога, который вы перечисляете, но это делает его рекурсивным.
решение1
Если вы не хотите ничего устанавливать, вы также можете использовать следующую команду:
for /f "delims=" %a in ('cd') do @for /f %b in ('dir /b /a') do @echo %a\%b
Сначала вам нужно cd
войти в каталог, иначе ничего не получится.
решение2
Попробуйте следующую команду:
dir /s /b /a
Он выдаст ВСЕ файлы, вы можете запустить его, FIND
если хотите, или добавить имя папки.
решение3
Если вы пробовали ls, почему бы просто не установить cygwin? Вы можете использовать find в cygwin:
find -name "*"
Если вы устанавливаете cygwin и хотите использовать find в cygwin, убедитесь, что find в cygwin вызывается либо с использованием полного пути, либо вставьте путь bin cygwin перед system32, поскольку в Windows также есть find.exe.
решение4
Это старый вопрос, но я все равно решил кое-что добавить.
DIR не проходит правильно по всем деревьям каталогов, которые вы хотите, в частности, не по тем, что на C:. Он просто останавливается в некоторых местах из-за разных защит.
ATTRIB работает намного лучше, потому что находит больше. (Почему такая разница? Почему MS заставляет одну утилиту работать так, а другую — иначе в этом отношении? Черт возьми, если я знаю.) По моему опыту, наиболее эффективный способ справиться с этим, хотя это и пустяк, — получить два листинга:
attrib /s /d C:\ >%TEMP%\C-with-directories.txt
attrib /s C:\ >%TEMP%\C-without-directories.txt
и получить разницу между ними. Эта разница — каталоги на C: (за исключением тех, которые слишком хорошо спрятаны). Для C: я обычно делаю это, запустив от имени администратора.