it-swarm.com.de

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

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

Ich habe auch mit Windows Version von ls Befehl gespielt und da auch kein Glück. Um den vollständigen Pfad anzuzeigen, müssen Sie am Ende des Verzeichnisses, das Sie auflisten, einen Stern (mydir\*) einfügen. Dies führt jedoch zu einer Rekursion.

13
rsk82

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 cd zuerst in das Verzeichnis eingeben, sonst funktioniert es nicht.

9
Dennis

Versuchen Sie den folgenden Befehl:

dir /s /b /a

Es werden ALLE Dateien angezeigt. Sie können es über FIND ausführen, wenn Sie einen Ordnernamen möchten oder hinzufügen.

17
bjkamp

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.

1
Codism

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.

0
djc

Ich wollte mit einer Verzeichnisliste arbeiten, also googelte ich "Verzeichnis drucken". Ich habe Anweisungen dafür gefunden, 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 Dienstprogrammverzeichnis 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"
0
Roger Bohl

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

% Cd% funktioniert nicht. %cd:\=\\% konvertiert also jeden \ in \\, was zu \ führt.

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