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


14

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

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


1
Eu posso resolver parte do seu problema: o sinalizador / a faz com que o dir inclua arquivos ocultos e do sistema.
Harry Johnston

Respostas:


9

Se você não deseja instalar nada, também pode usar o seguinte comando:

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

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


2
ou isto! para / f "delims ="% b in ('dir / b / a') do @echo% cd% \% b Mas a sua é uma técnica interessante, bastante genérica
barlop

você poderia explicar por favor, como esse comando funciona?
rubo77

18

Tente o seguinte comando:

dir /s /b /a

Ele fornecerá TODOS os arquivos, você poderá executá-lo FINDse desejar ou adicionar um nome de pasta.


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 a localização no cygwin, verifique se a localização no cygwin é chamada usando o caminho completo ou insira o caminho do compartimento do cygwin antes do system32, porque o Windows também possui um find.exe.


eu verifiquei UnixUtils, achado é recursiva :(
rsk82

2
@ rsk82: Com -maxdepth 1, não é.
26512 Dennis

0

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

Fazer% cd% não funciona .. então %cd:\=\\%converte todos os arquivos \para \\, o que resulta em \.

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

0

Esta é uma pergunta antiga, mas pensei em acrescentar algo de qualquer maneira.

O DIR não percorre corretamente todas as árvores de diretório que você deseja, em particular as que não estão em C :. Simplesmente desiste em alguns lugares devido a diferentes proteções.

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 outra funcionar diferente a esse respeito? Dane-se se eu souber.) Na minha experiência, a maneira mais eficaz de lidar com isso, embora seja um kludge, é 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 faria isso executando como administrador.


0

Eu queria trabalhar com uma lista de diretórios, então procurei no Google "Imprimir um diretório". Encontrei instruções para fazê-lo, mas elas incluíram alterações no Registro. Não querendo me incomodar com isso, e querendo usar uma lista, não imprimi-la, encontrei uma maneira de atingir meus objetivos sem alterar o Registro. Criei dois programas de arquivos em lotes para serem salvos em um diretório de utilitários. Então, quando quis imprimir ou trabalhar com um diretório, apenas copiei o arquivo em lotes apropriado para o diretório do assunto e execute-o! 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"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.