Wie liste ich alle Dateien und Verzeichnisse im angegebenen Verzeichnis mit vollem Pfad auf, aber nicht rekursiv?

14

Irgendwie wie dir /bBefehl, aber ich brauche auch versteckte und Systemdateien dort. Der eingebaute Befehl dir erlaubt es nicht, solche 'versteckten' Dateien mit dem Rest aufzulisten, und ich muss /sden vollständigen Pfad verwenden, was natürlich nicht rekursiv ist.

Ich habe auch mit Windows Version von lsCommand gespielt und da auch kein Glück. Um den vollständigen Pfad anzuzeigen, müssen Sie mydir\*am Ende des Verzeichnisses, das Sie auflisten, ein Sternchen ( ) einfügen. Dies macht es jedoch rekursiv.

rsk82
quelle
1
Ich kann einen Teil Ihres Problems lösen: Das Flag / a bewirkt, dass dir versteckte und Systemdateien hinzugefügt werden.
Harry Johnston

Antworten:

9

Wenn Sie nichts installieren möchten, können Sie auch den folgenden Befehl verwenden:

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

Sie müssen zuerst cdin das Verzeichnis, sonst funktioniert es nicht.

Dennis
quelle
2
oder dieses! for / f "delims ="% b in ('dir / b / a') tun @echo% cd% \% b Aber Ihre ist eine interessante Technik, ziemlich allgemein
Barlop
Können Sie bitte erklären, wie dieser Befehl funktioniert?
Rubo77
18

Versuchen Sie den folgenden Befehl:

dir /s /b /a

Es werden ALLE Dateien angezeigt, die Sie durchlaufen können, FINDwenn Sie möchten, oder wenn Sie einen Ordnernamen hinzufügen.

Bjkamp
quelle
1

Wenn Sie ls ausprobiert haben, warum installieren Sie nicht einfach cygwin? Sie können find in cygwin verwenden:

find -name "*"

Wenn Sie cygwin installieren und find in cygwin verwenden möchten, stellen Sie sicher, dass find in cygwin entweder mit dem vollständigen Pfad aufgerufen wird, oder fügen Sie den Pfad cygwin bin vor system32 ein, da Windows auch eine find.exe enthält.

Kodismus
quelle
ich überprüfte unixutils, Entdeckung ist rekursiv :(
rsk82
2
@ rsk82: Mit -maxdepth 1ist es nicht.
Dennis
0

du könntest sed mit gnuwin32 herunterladen. Dies stellt das aktuelle Verzeichnis voran.

% Cd% funktioniert nicht. %cd:\=\\%Konvertiert also jeden \nach \\, was zur Folge hat \.

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

Dies ist eine alte Frage, aber ich dachte, ich würde sowieso etwas hinzufügen.

DIR durchläuft nicht alle gewünschten Verzeichnisbäume, insbesondere nicht die in C :. Es gibt einfach an Orten wegen unterschiedlicher Schutzmaßnahmen auf.

ATTRIB funktioniert viel besser, weil es mehr findet. (Warum dieser Unterschied? Warum sollte MS dafür sorgen, dass ein Dienstprogramm auf die eine und ein anderes Weise funktioniert? Verdammt, wenn ich das weiß.) Nach meiner Erfahrung besteht der effektivste Weg, dies zu handhaben, darin, zwei Auflistungen zu erhalten:

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

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

und den Unterschied zwischen ihnen bekommen. Dieser Unterschied besteht in den Verzeichnissen auf C: (mit Ausnahme der zu gut ausgeblendeten). Bei C: würde ich dies normalerweise als Administrator ausführen.

djc
quelle
0

Ich wollte mit einer Verzeichnisliste arbeiten, also googelte ich "Verzeichnis drucken". Ich fand Anweisungen dazu, aber sie enthielten Änderungen an der Registrierung. Ich wollte mich nicht damit herumschlagen und einen Eintrag verwenden, ihn nicht ausdrucken und fand einen Weg, meine Ziele zu erreichen, ohne die Registrierung zu ändern. Ich habe zwei Stapelverarbeitungsprogramme erstellt, die in einem Utility-Verzeichnis gespeichert werden sollen. Wenn ich dann drucken oder mit einem Verzeichnis arbeiten wollte, kopiere ich einfach die entsprechende Batch-Datei in das Betreff-Verzeichnis und führe sie aus! Hier sind sie:

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
quelle