PowerShell – Eliminando una carpeta de una ruta de cadena
Básicamente tengo un camino:
"root/main/EVILFOLDER/first/second/third/etc"
Y quiero eliminar EVILFOLDER/
específicamente el tercer segmento del camino. La cosa es que EVILFOLDER podría ser cualquier cosa, por lo que no puedo codificarlo de antemano y la longitud del camino y el número de “/” pueden tener cualquier longitud variable.
Tengo esto, y funciona, pero no es elegante.
$path = "root/main/EVILFOLDER/first/second/third/etc"
$basePath = "{0}/{1}/" -f $path.Split('/')
$subFolder = "{3}/' -f $shortPath.Split('/')
$subFolderIndex = $shortPath.IndexOf($subFolder)
$newPath = $basePath + $shortPath.Substring($subFolderIndex)
En última instancia, esperaba poder escribirlo como algo así como “{0}/{1}/{3}…” para obtener el resto de la lista de camino. ¿Ideas?
davy.ai
Una posible solución para eliminar el tercer segmento de una ruta de longitud variable que contiene una carpeta específica es utilizar el método
Replace
junto con el métodoSplit
para aislar el segmento objetivo. Aquí tienes un ejemplo de fragmento de código en PowerShell:Aquí está lo que hace el código paso a paso:
/
).EVILFOLDER
) dentro de la matriz de segmentos.Este código debería funcionar independientemente de la longitud o el número de segmentos en la ruta de entrada, siempre y cuando contenga la carpeta objetivo que se desea eliminar.
Ten en cuenta que existen muchas otras formas de lograr el mismo resultado utilizando diferentes métodos de manipulación de cadenas y matrices, dependiendo de tus preferencias y requisitos. El código anterior es solo un ejemplo que utiliza lógica simple y directa.