13

Как-то похоже на команду dir /b но мне также нужны скрытые и системные файлы. Встроенная команда dir не позволяет перечислять такие «скрытые» файлы вместе с остальными, и я должен использовать /s чтобы указать полный путь, что, конечно, не является рекурсивным.

Я также играл с Windows-версией команды ls и там тоже не повезло. Чтобы отобразить полный путь, вы должны добавить звездочку (mydir\*) в конец каталога, который вы перечисляете, но это делает его рекурсивным.

6 ответов6

17

Попробуйте следующую команду:

dir /s /b /a

Он выдаст ВСЕ файлы, вы можете запустить его через FIND если хотите, или добавить имя папки.

9

Если вы не хотите ничего устанавливать, вы также можете использовать следующую команду:

for /f "delims=" %a in ('cd') do @for /f %b in ('dir /b /a') do @echo %a\%b

Вы должны сначала cd в каталог, иначе он не будет работать.

1

Если вы попробовали ls, почему бы просто не установить Cygwin? Вы можете использовать find в cygwin:

find -name "*"

Если вы устанавливаете cygwin и хотите использовать find в cygwin, убедитесь, что find в cygwin вызывается либо с использованием полного пути, либо вставьте путь в cygwin bin перед system32, поскольку в Windows также есть find.exe.

0

Это старый вопрос, но я все равно решил что-нибудь добавить.

DIR некорректно пересекает все деревья каталогов, которые вы хотите, в частности, не те, что на C:. Он просто сдается местами из-за разных защит.

ATTRIB работает намного лучше, потому что он находит больше. (Почему такая разница? Почему MS заставляет одну утилиту работать так, а другую - иначе? Будь я проклят, если знаю.) По моему опыту, наиболее эффективный способ справиться с этим, хотя это и клудж, это получить два списка:

attrib /s /d C:\ >%TEMP%\C-with-directories.txt

attrib /s C:\ >%TEMP%\C-without-directories.txt

и получите разницу между ними. Эта разница в каталогах на C: (кроме тех, которые слишком хорошо спрятаны). Для C: обычно я делаю это с правами администратора.

0

Я хотел работать со списком каталогов, поэтому я погуглил "Распечатать каталог". Я нашел инструкции для этого, но они включали изменения в реестр. Не желая возиться с этим и желая использовать листинг, а не распечатывать его, я нашел способ достичь своих целей без изменения реестра. Я создал две программы пакетного файла для сохранения в каталоге утилит. Затем, когда я захотел распечатать или работать с каталогом, я просто скопировал соответствующий пакетный файл в каталог объекта, а затем выполнил его! Вот они:

rem PrintThisDirectory.bat
rem Prints the directory where it resides
@echo off
dir %1/-p/o:gn> "%temp%\listing"
start /w notepad "%temp%\listing"

Rem ShowThisDirectory.bat
Rem Displays in Notepad the Directory where it resides
@echo off
dir %1/o:gn> "%temp%\listing"
start /w notepad "%temp%\listing"
0

Вы можете скачать sed с помощью gnuwin32. Это добавляет текущий каталог.

Выполнение% cd% не работает .. поэтому %cd:\=\\% преобразует каждый \ в \\ , что приводит к \ .

C:\WINDOWS>dir /b | sed "s/^/%cd:\=\\%\\/" 
C:\WINDOWS\0.log
C:\WINDOWS\003109_.tmp
C:\WINDOWS\addins

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