Programar en Batch

Iniciado por NoSuBa, 22 Febrero 2015, 20:19 PM

0 Miembros y 2 Visitantes están viendo este tema.

NoSuBa

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 (dos) [Seleccionar]
@echo off
copy y/ %0% "archivo2.bat"
copy y/ %0% "archivo3.bat"

El problema está ahora, en el comando MOVE  :-\ :

Código (dos) [Seleccionar]
move "¿?/archivo2.bat" "C:/"
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

Eleкtro

#1
La expresión ".\" indica el directorio de trabajo actual, por lo tanto solo tienes que reemplazar los síbolos "¿?" por ".\", es decir, esta ruta:
".\Archivo1.bat"

...O también puedes utilizar la variable dinámica "%CD%"
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 (dos) [Seleccionar]
@Echo OFF

Set "dirPaths=%UserProfile%\Desktop;%HomeDrive%"
Set "fileName=%~nx0"

For %%d in (%dirPaths%) Do (
   Copy /Y "%~f0" "%%d\%fileName%"
)

Pause&Exit /B 0


Saludos








NoSuBa

#2
Cita de: 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:
".\Archivo1.bat"

...O también puedes utilizar la variable dinámica "%CD%"
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 (dos) [Seleccionar]
@Echo OFF

Set "dirPaths=%UserProfile%\Desktop;%HomeDrive%"
Set "fileName=%~nx0"

For %%d in (%dirPaths%) Do (
    Copy /Y "%~f0" "%%d\%fileName%"
)

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

engel lex

Cita de: NoSuBa en 22 Febrero 2015, 20:44 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...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Eleкtro

Cita de: NoSuBa en 22 Febrero 2015, 20:44 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:
For /?

Saludos








NoSuBa

Gracias a todos elektro y enjel lex  :D

crisoof

Cita de: engel lex en 22 Febrero 2015, 20:46 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