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íafindstr
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 ladir
orden, no elfor
.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 apropiadofindstr.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 afindstr.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