¿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.


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á.


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.


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.


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

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.


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"
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.