Reemplace la salida del comando ‘tree’ por espacios y tabulaciones.
Entonces, hay un problema que estoy tratando de resolver y no sé si esta es la manera de hacerlo.
Básicamente, tengo una estructura de carpetas que se ve así:
---carpeta
---subcarpeta1
+---subsub1
| +---subsubsub1
---subsub2
---subsubsub2
Y quiero que se vea en Excel así:
link to excel screenshot
Sé que el comando tree
en Powershell o en la línea de comandos proporciona el texto de salida anterior, que es cómo lo obtuve. Ahora estoy tratando de darle formato a la salida del comando para que contenga espacios y tabulaciones en lugar de los +, \, | y – que tiene. Luego puedo importarlo a Excel para obtener la salida que busco en esa captura de pantalla.
En mi script de PS, actualmente puedo reemplazar los – con espacios, pero los símbolos +, \ y | resultan ser caracteres especiales que no se reemplazan tan fácilmente.
Es posible que lo que estoy tratando de lograr se pueda hacer de una manera mucho más fácil, y si es así, estoy abierto a ideas, pero esta es la forma en la que he estado intentando abordarlo.
Esto es lo que tengo hasta ahora para el código de Powershell:
$filename = "test.txt"
tree /a > $filename
get-content $filename | %{$_ -replace "-"," "}
get-content $filename | %{$_ -replace [RegEx]::Escape('< SharedPassKey=123456789abcdefghi/JKLM+nopqrst= >'),'< SharedPassKey=123456789abcdefghi/JKLM.nopqrst= >'}
Algunas cosas con las que me he encontrado hasta ahora:
- https://stackoverflow.com/questions/45741845/unable-to-edit-replace-string-value-with-plus-symbol-in-text-file-via-powers
- https://learn.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference
davy.ai
Convertir la estructura de carpetas en formato Excel
Como experto en IT especializado en Windows, PowerShell y manipulación de cadenas, el siguiente script de PowerShell es un buen enfoque para resolver el problema de convertir una estructura de carpetas en un formato legible por Excel.
El objetivo de este script es reemplazar los caracteres especiales – (guión), + (signo más), \ (barra invertida), | (barra vertical) con espacios y tabulaciones para formatear la salida de texto del comando
tree
. Después de eso, podemos importar el archivo formateado en Excel para obtener la salida deseada.El código de PowerShell proporcionado en la pregunta original es un buen punto de partida, donde almacenamos la salida sin formato del comando
tree
en un archivo llamado test.txt, luego iteramos sobre las líneas del archivo y aplicamos dos expresiones regulares para reemplazar los guiones y los caracteres especiales “<sharedpasskey=123456789abcdefghi jklm+nopqrst=”/”>” con espacios y puntos.Sin embargo, el script necesita algunas mejoras para manejar correctamente los caracteres especiales. Aquí hay algunas sugerencias:
-replace
para manejar los caracteres especiales, podemos usar el método.Replace()
de una variable de cadena para reemplazar cada carácter especial con su carácter de espacio o tabulación correspondiente. Este método es más rápido y confiable que las expresiones regulares en este caso.[Regex]::Escape()
para hacer esto automáticamente.Aquí hay una versión mejorada del código de PowerShell:
En este script, primero reemplazamos los guiones con espacios usando el operador
-replace
como en el script original.Después de eso, iteramos sobre las líneas del archivo usando el cmdlet
ForEach-Object
y realizamos las siguientes operaciones:StartsWith()
de una cadena. Si es así, reemplazamos cada signo + con cuatro espacios y cada símbolo | con un carácter de tabulación usando el método.Replace()
. Esto alineará correctamente los subdirectorios..Replace()
. Esto alineará correctamente los nombres de las carpetas..Replace()
. Esto se asegurará de que los caracteres especiales se reemplacen correctamente.Nota: El número de espacios utilizados para reemplazar los caracteres especiales o el signo + puede depender del ancho de las columnas en Excel o del tamaño de la fuente utilizada. Puede ajustar el número de espacios según sea necesario.
Después de ejecutar este script, deberíamos tener un archivo llamado test.txt con la salida formateada del comando
tree
que se puede importar en Excel.Espero que esto ayude. Por favor, avísame si tienes alguna pregunta sobre esta solución.</sharedpasskey=123456789abcdefghi></sharedpasskey=123456789abcdefghi></sharedpasskey=123456789abcdefghi>