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.


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.


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.


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.


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

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.


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"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.