Lista de subcarpetas con 2 entradas fantasma ¿cómo puedo evitarlas?

Con un archivo de murciélago ordené la lista de subcarpetas en un directorio pero ¿cuáles son las 2 carpetas llamadas "." 1 punto y ".." 2 puntos ? en realidad no están presentes en el explorador de ventanas y la mayoría de cómo puedo evitar mostrarlos en la lista?

@echo off
setlocal EnableExtensions EnableDelayedExpansion
> ".\Utils\Check last modified Profile.txt" (
    for /F "delims=" %%D in ('
    dir %APPDATA%\Mozilla\Firefox\Profiles\  /A /all-D /TW /A:D /O:-DE 
') do (
    rem print each item:        
       echo %%~D %
      )
)
endlocal

imagen aquí https://i.stack.imgur.com/i79Bk.jpg

Pregunta hecha hace 3 años, 4 meses, 29 días - Por nodenomad


6 Respuestas:

  • dir %APPDATA%\Mozilla\Firefox\Profiles\  /A /all-D /TW /A:D /O:-DE ^|findstr /v /e /L /c:"."
    

    Trabajó para mí.

    El dir la salida se envía findstr que permite a través de líneas que no terminan (/v) (/e) con la cadena literal (/L) ".

    Los directorios no pueden crearse con ese fin .

    Creo que no necesito comentar más sobre la especificación de atributos-selección.

    El ^ se requiere que la tubería se aplique a la dir orden, no el for.

    No haré más comentarios sobre los atributos-selección especificados.

    Respondida el Dec 17, 2020 a las 19:19 - por techtactician

    Votos positivos: 0 | Votos negativos: 0

  • . es el directorio actual. .. es el directorio padre.

    El explorador los esconde.

    Dir C:\windows\.\.\..
    

    Respondida el Dec 17, 2020 a las 19:24 - por scriptsorcererf493

    Votos positivos: 0 | Votos negativos: 0

  • He decidido publicar esto porque las respuestas existentes parecen estar usando las mismas opciones locas e incorrectas para las Dir Comando. Los siguientes ejemplos utilizan el apropiado findstr.exe método para eliminar el . y .. entradas de directorio de su lista, ordenados de acuerdo a la más reciente modificación a menos reciente. He incluido el camino completo a findstr.exe eliminar la posibilidad de %PATH% y/o %PATHEXT% modificaciones de no poder localizarlo.

    Si desea el mismo formato de salida, entonces esto debe funcionar para usted:

    @For /F "Tokens=1*Delims=:" %%G In ('"Dir "%AppData%\Mozilla\Firefox\Profiles" /AD/O-DE 2>NUL|%SystemRoot%\System32\findstr.exe /ELNV ".""')Do @Echo(%%H
    

    Si no necesitas las líneas vacías, esto debería omitirlas para ti:

    @For /F "Delims=" %%G In ('"Dir "%AppData%\Mozilla\Firefox\Profiles" /AD/O-DE 2>NUL|%SystemRoot%\System32\findstr.exe /ELV ".""')Do @Echo %%G
    

    Y si sólo necesitaba las líneas de nombre del directorio, entonces tal vez esto le satisfaga:

    @For /F EOL^=^ Delims^= %%G In ('"Dir "%AppData%\Mozilla\Firefox\Profiles" /AD/O-DE 2>NUL|%SystemRoot%\System32\findstr.exe /ELV ".""')Do @Echo %%G
    

    Respondida el Dec 17, 2020 a las 19:33 - por algorithmarchitect

    Votos positivos: 0 | Votos negativos: 0

  • Puede utilizar y agregar este interruptor /B

    @echo off
    @for /F "delims=" %%D in ('
        dir %APPDATA%\Mozilla\Firefox\Profiles\ /A /all-D /TW /A:D /O:-DE /B
    ') do (
        echo %%~D
        )
    

    Respondida el Dec 17, 2020 a las 19:38 - por codecanvas

    Votos positivos: 0 | Votos negativos: 0

  • En el caso de las carpetas "." y ".." cuando se muestra una lista de directorios, representan el directorio actual y el directorio padre, respectivamente. Estas entradas son parte de la estructura de directorios del sistema operativo y son necesarias para la navegación y funcionamiento adecuado del sistema de archivos.

    Si deseas evitar que se muestren estas carpetas en la lista de subcarpetas, puedes agregar una condición para omitirlas en tu script de batch. Puedes hacerlo de la siguiente manera:

    batch
    @echo off
    setlocal EnableExtensions EnableDelayedExpansion
    > ".\Utils\Check last modified Profile.txt" (
        for /F "delims=" %%D in ('
        dir %APPDATA%\Mozilla\Firefox\Profiles\  /A /all-D /TW /A:D /O:-DE 
    ') do (
        rem Para omitir las carpetas "." y "..":
        if not "%%~nxD"=="." (
            if not "%%~nxD"==".." (
                rem print each item:
                echo %%~D %
            )
        )   
    )
    endlocal
    

    En este código, se ha agregado

    Respondida el Dec 18, 2020 a las 19:19 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Las carpetas "." y ".." son carpetas del sistema que representan el directorio actual y el directorio principal, respectivamente. Siempre están presentes en todos los directorios, pero suelen estar ocultas en el Explorador de Windows.

    Para evitar mostrar estas carpetas en la lista, puedes utilizar el siguiente comando:

    
    dir %APPDATA%\Mozilla\Firefox\Profiles\  /A /all-D /TW /A:D /O:-DE /B
    

    El modificador /B oculta las carpetas del sistema.

    El script modificado quedaría así:

    
    @echo off
    setlocal EnableExtensions EnableDelayedExpansion
    > ".\Utils\Check last modified Profile.txt" (
        for /F "delims=" %%D in ('
        dir %APPDATA%\Mozilla\Firefox\Profiles\  /A /all-D /TW /A:D /O:-DE /B
    ') do (
        rem print each item:        
           echo %%~D %
          )
    )
    endlocal
    

    Espero que esto resuelva tu problema.

    Respondida el Dec 18, 2020 a las 19:26 - por Gemini

    Votos positivos: 0 | Votos negativos: 0