Título: Necesito ayuda con este .bat Publicado por: IISiroII en 4 Marzo 2016, 20:49 pm Tengo que hacer este ejercicio:
Desarrolla un fichero bat que reciba al menos 4 parametros: • El primer parametro sera una carpeta de ORIGEN. • El segundo parametro sera una carpeta de DESTINO. • El ultimo parametro sera la OPERACION a realizar. • Los parametros existentes entre el tercero y el ultimo seran extensiones de archivos. El fichero bat validara que al menos hay 4 parametros. En caso de error finalizara. El fichero bat validara que ORIGEN existe. En caso de que no exista finalizara. El fichero bat validara que DESTINO existe. En caso de que no exista finalizara. El fichero bat validara que OPERACION vale 1,2,3 o 4. En caso de que no lo haga el fichero bat finalizara. Acciones a realizar en funcion del valor de operación: OPERACION=1 • Copia el contenido de la carpeta ORIGEN a la carpeta DESTINO. OPERACION=2 • Muestra los atributos de todos los archivos existentes en la carpeta DESTINO. OPERACION=3 • Muestra todas las carpetas y subcarpetas (ficheros no) existentes en la carpeta ORIGEN. OPERACION=4 • Muestra el numero total de archivos (carpetas no) con las extensiones pasadas como parametros existentes en la carpeta ORIGEN y en la carpeta DESTINO Por el momento llevo esto hecho: Código Lo único que me está fallando ahora mismo, obviamente son los for /r de operacion4, ya que quiero que dentro del paréntesis después del in me pille n parámetros, pero que estos parámetros empiecen desde el 4º ( es decir, que no me pille el %1, %2, %3). Título: Re: Necesito ayuda con este .bat Publicado por: Eleкtro en 4 Marzo 2016, 21:12 pm Lo único que me está fallando ahora mismo, obviamente son los for /r de operacion4, ya que quiero que dentro del paréntesis después del in me pille n parámetros, pero que estos parámetros empiecen desde el 4º ( es decir, que no me pille el %1, %2, %3). No me percato de la obviedad. El script funciona como es debido, de lo contrario, ¿qué otro problema le encuentras?: Código: Script.cmd ".\" ".\" "" ".ext1" ".ext2" ".ext3" Código PD: Recuerda que puedes setear variables locales para asignarle los valores delos argumentos y así no trabajar con índices. También puedes utilizar el comando SHIFT para deslizar los argumentos hacia la izquierda. Saludos! Título: Re: Necesito ayuda con este .bat Publicado por: IISiroII en 4 Marzo 2016, 21:40 pm Lo que quiero hacer basicamente con el ultimo apartado es que haga esto, que lo haga con n parametros:
(http://i.imgur.com/No3X14l.png) El problema que tengo es que cuando pongo for /r %1 %%i in (*%4) do ( ... , aunque ponga más parametros en la ejecución, solo me detecta el 4º parametro, y si pongo for /r %1 %%i in (*%4, *%5, *%6) do (... y pongo en la ejecución 1 solo parametro me hace esto: (http://imgur.com/ogfpnUG.png) Título: Re: Necesito ayuda con este .bat Publicado por: Eleкtro en 4 Marzo 2016, 22:28 pm ¿Qué argumentos le estás pasando? (muestra como llamas al script por linea de comandos). ¿has probado a hacerlo como en el código que te mostré?.
Saludos Título: Re: Necesito ayuda con este .bat Publicado por: IISiroII en 4 Marzo 2016, 22:35 pm Código: archivo.bat carpetaorigen carpetadestino 4(para hacer la operacion4) .bat .txt .exe En un principio, a partir del 4 parametro, tengo que tener la posibilidad de poner todas las extensiones que quiera, es decir, no solo hasta el sexto Título: Re: Necesito ayuda con este .bat Publicado por: Eleкtro en 5 Marzo 2016, 00:31 am a partir del 4 parametro, tengo que tener la posibilidad de poner todas las extensiones que quiera, es decir, no solo hasta el sexto Eso no es posible realizarlo de una manera simple ni elegante en un lenguaje tan limitado como Batch, puesto que para empezar, está limitado al uso de 10 variables de argumento de forma simultanea (%0 a %9). El límite real es de 255 argumentos, pero solo nos permite usar 10 variables para ello, sin embargo, como te comenté en el mensaje anterior, puedes utilizar el comando Shift para deslizar la posición de los argumentos, es decir, pasar el valor de la variable de argumento "invisible" %10 a la variable de argumento %9 y etc, esa es la solución, pero aun asi deberás realizar algo como este tedioso código de aqui abajo, puesto que el comando Shift no afecta al orden de la variable que agrupa todos los argumentos (%*) Código Saludos! |