como listar todos os arquivos e diretórios em determinado diretório com caminho completo, mas não recursivo?

13

De alguma forma, como o comando dir /b , mas também preciso de arquivos ocultos e de sistema. O comando built in dir não permite listar esses arquivos 'ocultos' com o restante e eu devo usar /s para ter o caminho completo lá, o que é claro que não é recursivo.

Eu também joguei com a versão windows do comando ls e também não tive sorte. Para exibir o caminho completo, você deve adicionar um asterisco ( mydir\* ) no final do diretório que está listando, mas isso o torna recursivo.

    
por rsk82 26.04.2012 / 19:10

6 respostas

9

Se você não quiser instalar nada, também poderá usar o seguinte comando:

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

Você precisa cd no diretório primeiro ou não funcionará.

    
por 26.04.2012 / 19:42
17

Experimente o seguinte comando:

dir /s /b /a

Ele fornecerá TODOS os arquivos, você pode executá-lo através de FIND se desejar ou adicionar um nome de pasta.

    
por 01.08.2012 / 20:19
1

Se você tentou o ls, por que não instalar o cygwin? Você pode usar o find no cygwin:

find -name "*"

Se você instalar o cygwin e quiser usar o find no cygwin, certifique-se de que o find no cygwin seja chamado usando o caminho completo ou insira o caminho do cygwin bin antes do system32, porque o Windows também possui um find.exe.

    
por 26.04.2012 / 19:19
0

você pode baixar o sed com o gnuwin32. Isso preenche o diretório atual.

Fazer% cd% não funciona. Portanto, %cd:\=\% converte todos os \ a \ , o que resulta em \ .

C:\WINDOWS>dir /b | sed "s/^/%cd:\=\%\/" 
C:\WINDOWS
C:\WINDOWS>dir /b | sed "s/^/%cd:\=\%\/" 
C:\WINDOWS%pre%.log
C:\WINDOWS%pre%3109_.tmp
C:\WINDOWS\addins
.log C:\WINDOWS%pre%3109_.tmp C:\WINDOWS\addins
    
por 26.04.2012 / 19:28
0

Essa é uma pergunta antiga, mas eu pensei em adicionar algo de qualquer maneira.

O DIR não percorre corretamente todas as árvores de diretórios que você deseja, em particular as que não estão em C :. Ele simplesmente desiste de lugares por causa de proteções diferentes.

ATTRIB funciona muito melhor, porque encontra mais. (Por que essa diferença? Por que a MS faria um utilitário funcionar de uma maneira e outro trabalho diferente a esse respeito? Amaldiçoado se eu souber.) Na minha experiência, a maneira mais eficaz de lidar com isso, embora seja um problema, é obter duas listagens:

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

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

e obtenha a diferença entre eles. Essa diferença são os diretórios em C: (exceto os que estão muito bem ocultos). Para C :, eu normalmente faço isso como administrador.

    
por 16.01.2014 / 14:50
0

Eu queria trabalhar com uma listagem de diretórios, então pesquisei "Imprimir um diretório" no Google. Eu encontrei instruções para fazer isso, mas eles incluíram alterações no registro. Não querendo atrapalhar com isso, e querendo usar uma listagem, não imprimi-lo, encontrei uma maneira de atingir meus objetivos sem alterar o registro. Eu criei dois programas de arquivo em lotes para ser salvo em um diretório de utilitários. Então, quando eu quis imprimir ou trabalhar com um diretório, eu apenas copiei o arquivo de lote apropriado no diretório de assunto, então executei! Aqui estão eles:

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"
    
por 02.11.2014 / 19:02