jak wyświetlić listę wszystkich plików i katalogów w danym katalogu z pełną ścieżką, ale nie rekurencyjną?

14

Jakoś jak dir /bpolecenie, ale potrzebuję też ukrytych plików systemowych. Wbudowane polecenie dir nie pozwala na wyświetlanie takich „ukrytych” plików wraz z resztą i muszę użyć /spełnej ścieżki, która oczywiście nie jest rekurencyjna.

Grałem też z wersją lspoleceń systemu Windows i też nie miałem szczęścia. Aby wyświetlić pełną ścieżkę, musisz dodać gwiazdkę ( mydir\*) na końcu wymienianego katalogu, ale powoduje to rekurencję.

rsk82
źródło
1
Mogę rozwiązać część problemu: flaga / a sprawia, że ​​katalog zawiera ukryte i systemowe pliki.
Harry Johnston

Odpowiedzi:

9

Jeśli nie chcesz niczego instalować, możesz także użyć następującego polecenia:

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

cdNajpierw musisz wejść do katalogu, bo inaczej to nie zadziała.

Dennis
źródło
2
albo to! for / f "delims ="% b in ('dir / b / a') do @echo% cd% \% b Ale twoja jest interesującą techniką, dość ogólną
barlop
czy mógłbyś wyjaśnić, jak to polecenie działa?
rubo77
18

Spróbuj wykonać następujące polecenie:

dir /s /b /a

Daje WSZYSTKIE pliki, możesz je uruchomić, FINDjeśli chcesz lub dodać nazwę folderu.

bjkamp
źródło
1

Jeśli próbowałeś ls, dlaczego po prostu nie zainstalować cygwin? Możesz użyć find w cygwin:

find -name "*"

Jeśli instalujesz cygwin i chcesz użyć find w cygwin, upewnij się, że find w cygwin jest wywoływany przez użycie pełnej ścieżki lub wstawienie ścieżki bin cygwin przed systemem32, ponieważ system Windows ma również find.exe.

Codism
źródło
sprawdziłem unixutils, znajdź jest rekurencyjny :(
rsk82
2
@ rsk82: Z -maxdepth 1, nie jest.
Dennis
0

możesz pobrać sed z gnuwin32. To poprzedza bieżący katalog.

Wykonanie% cd% nie działa .. więc %cd:\=\\%konwertuje każdy \na \\, co powoduje \.

C:\WINDOWS>dir /b | sed "s/^/%cd:\=\\%\\/" 
C:\WINDOWS\0.log
C:\WINDOWS\003109_.tmp
C:\WINDOWS\addins
barlop
źródło
0

To stare pytanie, ale pomyślałem, że i tak coś dodam.

DIR nie przechodzi poprawnie przez wszystkie drzewa katalogów, w szczególności przez te w C :. Po prostu poddaje się w różnych miejscach z powodu różnych zabezpieczeń.

ATTRIB działa znacznie lepiej, ponieważ znajduje więcej. (Skąd ta różnica? Dlaczego stwardnienie rozsiane miałoby sprawić, by jedno narzędzie działało w jedną stronę, a inne działało inaczej pod tym względem? Cholera, jeśli wiem.) Z mojego doświadczenia wynika, że ​​najskuteczniejszym sposobem radzenia sobie z tym, chociaż jest to kludge, jest uzyskanie dwóch list:

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

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

i uzyskaj różnicę między nimi. Tą różnicą są katalogi w C: (oprócz tych, które są zbyt dobrze ukryte). W przypadku C: zwykle robię to jako administrator.

djc
źródło
0

Chciałem pracować z listą katalogów, więc przejrzałem „Wydrukuj katalog”. Znalazłem instrukcje, aby to zrobić, ale zawierały one zmiany w Rejestrze. Nie chcąc się tym zajmować i chcąc skorzystać z wykazu, a nie go wydrukować, znalazłem sposób na osiągnięcie moich celów bez zmiany Rejestru. Utworzyłem dwa programy plików wsadowych do zapisania w katalogu Utility. Następnie, gdy chciałem wydrukować lub pracować z katalogiem, po prostu kopiuję odpowiedni plik wsadowy do katalogu tematów, a następnie go uruchamiam! Tutaj są:

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"
Roger Bohl
źródło