Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: NoSuBa en 22 Febrero 2015, 20:19 pm



Título: Programar en Batch
Publicado por: NoSuBa en 22 Febrero 2015, 20:19 pm
Quiero crear un .bat que se autocopie en varias direcciones.  ;D

La idea es que ejecute el archivo, se copie a si mismo dos veces y mande una de esas copias a el disco C:/ y otra al escritorio. Esto es lo que llevo hecho:

Código
  1. @echo off
  2. copy y/ %0% "archivo2.bat"
  3. copy y/ %0% "archivo3.bat"
  4.  
El problema está ahora, en el comando MOVE  :-\ :

Código
  1. move "¿?/archivo2.bat" "C:/"
  2. move "¿?/archivo3.bat" "%userprofile%/desktop"

Que pongo en lugar de "¿?", la ubicación de los archivos copiables será variable, dependiendo de en que carpeta esté el original (ya que los copia en la misma dirección). NECESITO AYUDA, ya lo he probado todo.   >:(

POR FAVOR déjenme el COMANDO y bien explicado su FUNCIONAMIENTO, GRACIAS :)

Mod: Tema movido, usa etiquetas GeSHi


Título: Re: Programar en Batch
Publicado por: Eleкtro en 22 Febrero 2015, 20:40 pm
La expresión ".\" indica el directorio de trabajo actual, por lo tanto solo tienes que reemplazar los síbolos "¿?" por ".\", es decir, esta ruta:
Código:
".\Archivo1.bat"

...O también puedes utilizar la variable dinámica "%CD%"
Código:
Echo "%CD%\Archivo1.bat"

Pero déjame decirte que la mecánica del código que has expuesto no es del todo correcta ya que puedes saltarte el paso de mover, copiando directamente a los directorios destino:
Código
  1. @Echo OFF
  2.  
  3. Set "dirPaths=%UserProfile%\Desktop;%HomeDrive%"
  4. Set "fileName=%~nx0"
  5.  
  6. For %%d in (%dirPaths%) Do (
  7.    Copy /Y "%~f0" "%%d\%fileName%"
  8. )
  9.  
  10. Pause&Exit /B 0

Saludos


Título: Re: Programar en Batch
Publicado por: NoSuBa en 22 Febrero 2015, 20:44 pm
La expresión ".\" indica el directorio de trabajo actual, por lo tanto solo tienes que reemplazar los síbolos "¿?" por ".\", es decir, esta ruta:
Código:
".\Archivo1.bat"

...O también puedes utilizar la variable dinámica "%CD%"
Código:
Echo "%CD%\Archivo1.bat"

Pero déjame decirte que la mecánica del código que has expuesto no es del todo correcta ya que puedes saltarte el paso de mover, copiando directamente a los directorios destino:
Código
  1. @Echo OFF
  2.  
  3. Set "dirPaths=%UserProfile%\Desktop;%HomeDrive%"
  4. Set "fileName=%~nx0"
  5.  
  6. For %%d in (%dirPaths%) Do (
  7.    Copy /Y "%~f0" "%%d\%fileName%"
  8. )
  9.  
  10. Pause&Exit /B 0

Gracias Elektro, me gustan los dos primeros comandos. El otro, seguramente funcionará mejor y todo eso, pero no entiendo lo que escribes ahí (los comandos), y prefiero saber lo que hace lo que programo. Muchas Gracias de todas fromas.  :D ;D ;D ;D


Título: Re: Programar en Batch
Publicado por: engel lex en 22 Febrero 2015, 20:46 pm
Gracias Elektro, me gustan los dos primeros comandos. El otro, seguramente funcionará mejor y todo eso, pero no entiendo lo que escribes ahí (los comandos), y prefiero saber lo que hace lo que programo. Muchas Gracias de todas fromas.  :D ;D ;D ;D

tienes google e incluso si haces click sobre el comando te manda a la pagina con la explicación...


Título: Re: Programar en Batch
Publicado por: Eleкtro en 22 Febrero 2015, 20:53 pm
Gracias Elektro, me gustan los dos primeros comandos. El otro, seguramente funcionará mejor y todo eso, pero no entiendo lo que escribes ahí (los comandos), y prefiero saber lo que hace lo que programo. Muchas Gracias de todas fromas.  :D ;D ;D ;D

Lo que hago es asignar una cadena delimitada por comas (CSV) que contiene las rutas de los directorios, podriamos decir que es una simulación de una especie de Array limitado, e itero los elementos con el For para copiar el archivo a cada directorio especificado en el ""Array"".
Si tienes muchos directorios entonces esa metodología te ahorraría mucha repetición de código en una herramienta limitada cómo es Batch.

Aparte de lo que te ha comentado el compañero @Engel Lex, también puedes mirar la documentación interna de la CMD.

En consola:
Código:
For /?

Saludos


Título: Re: Programar en Batch
Publicado por: NoSuBa en 22 Febrero 2015, 20:56 pm
Gracias a todos elektro y enjel lex  :D


Título: Re: Programar en Batch
Publicado por: crisoof en 24 Febrero 2015, 13:38 pm
tienes google e incluso si haces click sobre el comando te manda a la pagina con la explicación...

Gracias no sabia que podia hacer click en los comandos xDD, me ahorraste caleta de tiempo buscando los parametros del for xD ;-) ;-)
Saludos