¿Cómo enumerar todos los archivos y directorios en el directorio dado con la ruta completa pero no recursiva?

14

De alguna manera me gusta el dir /bcomando, pero también necesito archivos ocultos y de sistema allí. El comando dir incorporado no permite enumerar dichos archivos 'ocultos' con el resto y debo usarlos /spara tener una ruta completa allí, que por supuesto no es recursiva.

También jugué con la versión de Windows del lscomando y tampoco tuve suerte. Para mostrar la ruta completa, debe agregar un asterisco ( mydir\*) al final del directorio que está enumerando, pero esto lo hace recursivo.

rsk82
fuente
1
Puedo resolver parte de su problema: el indicador / a hace que el directorio incluya archivos ocultos y del sistema.
Harry Johnston el

Respuestas:

9

Si no desea instalar nada, también puede usar el siguiente comando:

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

cdPrimero debe ingresar al directorio o no funcionará.

Dennis
fuente
2
¡o esto! for / f "delims ="% b in ('dir / b / a') do @echo% cd% \% b Pero la suya es una técnica interesante, bastante genérica
barlop
¿podría explicar por favor cómo funciona este comando?
rubo77
18

Pruebe el siguiente comando:

dir /s /b /a

Le dará TODOS los archivos, puede ejecutarlos FINDsi lo desea o agregar un nombre de carpeta.

bjkamp
fuente
1

Si probaste ls, ¿por qué no simplemente instalar cygwin? Puedes usar find en cygwin:

find -name "*"

Si instala cygwin y desea utilizar find en cygwin, asegúrese de llamar a find en cygwin utilizando la ruta completa o inserte la ruta bin de cygwin antes de system32 porque Windows también tiene un find.exe.

Codismo
fuente
comprobé unixutils, find es recursivo :(
rsk82
2
@ rsk82: Con -maxdepth 1, no lo es.
Dennis
0

puedes descargar sed con gnuwin32. Esto antepone el directorio actual.

Hacer% cd% no funciona ... por lo que %cd:\=\\%convierte cada \a \\, lo que da como resultado \.

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

Esta es una vieja pregunta, pero pensé que agregaría algo de todos modos.

DIR no atraviesa correctamente todos los árboles de directorios que desea, en particular no los de C :. Simplemente se rinde en algunos lugares debido a diferentes protecciones.

ATTRIB funciona mucho mejor, porque encuentra más. (¿Por qué esta diferencia? ¿Por qué MS haría que una utilidad funcione de una manera y otra funcione diferente a este respecto? Maldita sea si lo sé). En mi experiencia, la forma más efectiva de manejar esto, aunque es un error, es obtener dos listados:

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

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

y obtener la diferencia entre ellos. Esa diferencia son los directorios en C: (excepto los que están muy bien ocultos). Para C :, normalmente lo hago como administrador.

djc
fuente
0

Quería trabajar con una lista de directorios, así que busqué en Google "Imprimir un directorio". Encontré instrucciones para hacerlo, pero incluyeron cambios en el Registro. No queriendo jugar con esto, y queriendo usar un listado, no imprimirlo, encontré una manera de cumplir mis objetivos sin cambiar el Registro. Creé dos programas de archivos por lotes para guardarlos en un Directorio de utilidades. Luego, cuando quería imprimir o trabajar con un directorio, simplemente copie el archivo por lotes apropiado en el directorio del sujeto, ¡luego lo ejecuto! Aquí están:

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"
Roger Bohl
fuente