come elencare tutti i file e le directory in una determinata directory con percorso completo ma non ricorsivo?


14

In qualche modo mi piace il dir /bcomando ma ho bisogno anche di file nascosti e di sistema lì. Il comando dir incorporato non consente di elencare tali file "nascosti" con il resto e devo usare /sper avere il percorso completo, che ovviamente non è ricorsivo.

Ho anche giocato con la versione di lscomando di Windows e non c'è stata fortuna. Per visualizzare il percorso completo è necessario aggiungere asterisco ( mydir\*) alla fine della directory che si sta elencando, ma questo lo rende ricorsivo.


1
Posso risolvere parte del tuo problema: il flag / a rende dir include file nascosti e di sistema.
Harry Johnston,

Risposte:


9

Se non vuoi installare nulla, puoi anche usare il seguente comando:

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

Devi cdprima entrare nella directory o non funzionerà.


2
o questo! for / f "delims ="% b in ('dir / b / a') do @echo% cd% \% b Ma la tua è una tecnica interessante, abbastanza generica
barlop

potresti spiegare per favore, come funziona questo comando?
rubo77,

18

Prova il seguente comando:

dir /s /b /a

Fornirà TUTTI i file, è possibile eseguirlo FINDse si desidera o aggiungere un nome di cartella.


1

Se hai provato ls, perché non installare cygwin? Puoi usare find in cygwin:

find -name "*"

Se si installa cygwin e si desidera utilizzare find in cygwin, assicurarsi che il find in cygwin sia chiamato utilizzando il percorso completo o inserire il percorso bin cygwin prima di system32 perché Windows ha anche find.exe.


ho controllato unixutils, la ricerca è ricorsiva :(
rsk82

2
@ rsk82: con -maxdepth 1, non lo è.
Dennis,

0

puoi scaricare sed con gnuwin32. Questo antepone la directory corrente.

Fare% cd% non funziona .. quindi %cd:\=\\%converte tutti \in \\, il che si traduce in \.

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

0

Questa è una vecchia domanda, ma ho pensato di aggiungere comunque qualcosa.

DIR non attraversa correttamente tutti gli alberi di directory desiderati, in particolare non quelli su C :. Si arrende semplicemente in alcuni punti a causa di diverse protezioni.

ATTRIB funziona molto meglio, perché ne trova di più. (Perché questa differenza? Perché MS dovrebbe far funzionare un'utilità in un modo e un altro in un modo diverso in questo senso? Dannato se lo so.) Nella mia esperienza il modo più efficace per gestirlo, sebbene sia un kludge, è quello di ottenere due elenchi:

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

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

e ottieni la differenza tra loro. Quella differenza sono le directory su C: (tranne quelle che sono troppo ben nascoste). Per C :, di solito lo faccio come amministratore.


0

Volevo lavorare con un elenco di directory, quindi ho cercato su Google "Stampa una directory". Ho trovato le istruzioni per farlo, ma includevano modifiche al registro. Non volendo scherzare con questo, e volendo usare un elenco, non stamparlo, ho trovato un modo per raggiungere i miei obiettivi senza cambiare il registro. Ho creato due programmi di file batch da salvare in una directory delle utility. Quindi, quando volevo stampare o lavorare con una directory, ho semplicemente copiato il file batch appropriato nella directory del soggetto, quindi eseguirlo! Eccoli:

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"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.