none
Crear carpetas automáticamente RRS feed

  • Pregunta

  • Una pregunta Fernando.

    Si yo tengo una lista de archivos.. asi

    ADD MEMBER    2 A$HELP   AAAA
    aca va el contenido del archivo .

    .

    .

    END OF MEMBER
    ADD MEMBER    2 A$MAIL   AAAA
     aca va el contenido del archivo segundo
    END OF MEMBER

    y asi sucesivamente, yo lo que quiero es crear una carpeta que lleve como nombre el numero que aparece despues de "ADD MEMBER" porque en mi lista hay 5,911 archivos (aveces muchos mas y otras muchos menos) y claro yo puedo ir creando cada fichero TXT controlando el ADD y el END(pero en una sola carpeta), pero vi tu vbscript y quiero agregarlo a otro que tengo, pero claro tiene que ir creando la carpeta y aveces hay 5 o mas archivos por carpeta y asi sucesivamente, lo que quiero evitar es el "Carpeta ya existe" ...

    Alguna Idea ¿?

    miércoles, 7 de noviembre de 2012 17:46

Respuestas

  • Para evitar el "Carpeta ya existe" tienes el Cmdlet Test-Path, con el que puedes consultar si ya existe y en caso contrario crearla. Pongamos que el fichero es d:\Proceso\Relacion.txt:

    Get-Content d:\PRoceso\Relacion.txt|
      Where-Object{$_ -like "ADD*MEMBER*"}|
        ForEach-Object{
                        $Numero = $_.Split("`t ",[StringSplitOptions]::RemoveEmptyEntries)[2]
                        If ((Test-Path "d:\Proceso\Ficheros\$Numero") -eq $False)
                        {
                           mkdir "d:\Proceso\Ficheros\$Numero" | Out-Null
                        }
                      }

    Get-Content nos devuelve un array de líneas del fichero; con Where-Object filtramos para quedarnos sólo con las ADD MEMBER; por cada una de las encontradas (ForEach-Object) extraemos el número que contiene, por medio de un split al que le pasamos como separador el tabulador o el espacio (no sabemos, o al menos no lo sé yo, si sólo son espacios o también hay tabuladores) y además le pasamos la opción de eliminar elementos vacíos (para cuando hay más de un espacio seguido); siguiendo el ejemplo de fichero que me ponías se obtendría un array cuyo tercer elemento (índice 2) sería el número, número que almacenamos; revisamos si existe el directorio correspondiente y en caso contrario lo creamos, canalizando a Out-Null para que no muestre nada por pantalla.


    Un saludo

    Fernando Reyes [MS MVP]
    MCSA 2000/2003
    MCSE 2000/2003
    MCITP EnterpriseAdministrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/
    freyes.champú@champú.mvps.org
    (Aclárate la cabeza si quieres escribirme)





    martes, 20 de noviembre de 2012 9:06
    Moderador