Programación en Pawn - SAMP

[BATCH] Sencillo script de backups

Aquí podrás publicar temas sobre programación en general (C++, JAVA, Python, etc), que no encajen en el apartado Programación Web.
Bueno, hace tiempo uso un script que hacia backups automáticamente de mi Gamemode y abria el IDE que uso (ST3). Pense en publicarlo, pero decidí re-hacerlo para así fuera mas "personalizable" que el que yo usaba

Como usuario del programa, solo tienes que hacer 2 cosas:

1) Crear un acceso directo de tu IDE (Pawno, ST3, VScode, cualquiera), renombrarlo a "ide" y dejarlo en la raiz del servidor.
2) Click derecho en el script, le das a editar, y en las primeras lineas hay unos parametros para editar, los comentarios indican que va en cada parte.

Y con eso estaría. El script genera automaticamente la carpeta de backups y los crea usando el siguiente formato:

B_HRA_MIN_SEG##DIA_MES.pwn


Tienen que guardarlo en formato .bat

Código: Seleccionar todo

@echo off
REM Script desarrollado por Federico Arredondo
REM Recordar configurar estos parametros de aqui abajo

REM carpetagm es el nombre de la carpeta donde esta el Gamemode, el default es gamemodes
set carpetagm=gamemodes
REM ext es la extension del Gamemode, generalmente es .pwn, pero tambien existe el .p. NO colocar el punto!
set ext=pwn
REM El nombre del gamemode, sensible a mayusculas.
set nombregm=GameMode

IF NOT EXIST "B_Backups" (mkdir B_Backups)

:menu
echo [1] - Hacer backup e iniciar IDE.
echo [2] - Hacer backup unicamente
echo [3] - Iniciar el IDE sin hacer backup
echo [4] - Salir del programa
set /p opc="Ingrese una opcion: "
IF "%opc%"=="1" (goto backide)
IF "%opc%"=="2" (goto back)
IF "%opc%"=="3" (goto ide)
IF "%opc%"=="4" (goto :EOF)
echo ¡Opcion incorrecta!
echo ­­Presione cualquier tecla para volver a ingresar una opcion
pause>nul
cls
goto menu

:backide
set fecha=%DATE%
set horaa=%TIME%
set dia=%fecha:~0,2%
set mes=%fecha:~3,2%
set hora=%horaa:~0,2%
set minuto=%horaa:~3,2%
set segundo=%horaa:~6,2%
echo /%carpetagm%\%nombregm%.%ext%
copy "./%carpetagm%\%nombregm%.%ext%" "./B_Backups/"
cd B_Backups
rename "%nombregm%.%ext%" "B_%hora%_%minuto%_%segundo%##%dia%_%mes%.pwn"
IF EXIST "%nombregm%.%ext%" (del %nombregm%.%ext%)
cd ..
start ide.lnk
echo ¡Hecho! Preisone cualquier tecla para mostrar de nuevo el menu
pause>nul
cls
goto menu

:back
:backide
set fecha=%DATE%
set horaa=%TIME%
set dia=%fecha:~0,2%
set mes=%fecha:~3,2%
set hora=%horaa:~0,2%
set minuto=%horaa:~3,2%
set segundo=%horaa:~6,2%
echo /%carpetagm%\%nombregm%.%ext%
copy "./%carpetagm%\%nombregm%.%ext%" "./B_Backups/"
cd B_Backups
rename "%nombregm%.%ext%" "B_%hora%_%minuto%_%segundo%##%dia%_%mes%.pwn"
IF EXIST "%nombregm%.%ext%" (del %nombregm%.%ext%)
cd ..
echo ¡Hecho! Preisone cualquier tecla para mostrar de nuevo el menu
pause>nul
cls
goto menu

:ide
start ide.lnk
echo ¡Hecho! Preisone cualquier tecla para mostrar de nuevo el menu
pause>nul
cls
goto menu
Pocas personas valoran el buen trabajo genial -good
¿O sea esto hace backup en general o solo del GameMode?
Gibarch escribió:
15 Nov 2018 18:33
¿O sea esto hace backup en general o solo del GameMode?
Solo del Gamemode. Este programa no esta enfocado a gamemodes modulares, simplemente es un script para backupear el Gamemode, basicamente una alternativa a la gente que no usa Git.
Hermoso mi Fede. -good
Me gusta, gracias por el aporte, de hecho lo personalice para que la copia se realizará en mi OneDrive. Así para no tener riesgo de perder mi gamemode -hk

Me gustaría que se ejecutará automáticamente el script cada que enciendo mi Gamemode, por ahora tengo un macro. En conclusión gracias. -good -thumbup
gloweryt escribió:
17 Nov 2018 20:36
Me gusta, gracias por el aporte, de hecho lo personalice para que la copia se realizará en mi OneDrive. Así para no tener riesgo de perder mi gamemode -hk

Me gustaría que se ejecutará automáticamente el script cada que enciendo mi Gamemode, por ahora tengo un macro. En conclusión gracias. -good -thumbup
Como "cuando enciendes el Gamemode"?
#Fede escribió:
17 Nov 2018 22:00
gloweryt escribió:
17 Nov 2018 20:36
Me gusta, gracias por el aporte, de hecho lo personalice para que la copia se realizará en mi OneDrive. Así para no tener riesgo de perder mi gamemode -hk

Me gustaría que se ejecutará automáticamente el script cada que enciendo mi Gamemode, por ahora tengo un macro. En conclusión gracias. -good -thumbup
Como "cuando enciendes el Gamemode"?
Quiero imaginarme que es cuando abres el samp-server.exe, y prendes el host (?
#Fede escribió:
17 Nov 2018 22:00
...
Si, creo que no me explique bien, quise decir cuando colocó a correr el samp server.
gloweryt escribió:
18 Nov 2018 08:10
#Fede escribió:
17 Nov 2018 22:00
...
Si, creo que no me explique bien, quise decir cuando colocó a correr el samp server.
Con Batch es algo bastante complejo, sin embargo, me apañe una idea para hacerlo, pero ya te aviso, consume bastante memoria. Primero, incluye "batchbackup.inc" en el Gamemode, luego, este script lo ejecutas una vez y queda abierto, esperando al inicio del Gamemode. Cuando inicia, lo backupea, y sigue funcionando normalmente, esperando al inicio del gamemode otra vez.
Spoiler:
batchbackup.inc

Código: Seleccionar todo

#include <YSI\y_hooks>

hook OnGameModeInit(){
	if(fexist(batch.bk)) return 0; 
    new File:file = fopen(batch.bk, io_write); 
    fclose(batch.bk); 
	return 1;
}
Script .bat

Código: Seleccionar todo

@echo off
REM Script desarrollado por Federico Arredondo
REM Recordar configurar estos parametros de aqui abajo

REM carpetagm es el nombre de la carpeta donde esta el Gamemode, el default es gamemodes
set carpetagm=gamemodes
REM ext es la extension del Gamemode, generalmente es .pwn, pero tambien existe el .p. NO colocar el punto!
set ext=pwn
REM El nombre del gamemode, sensible a mayusculas.
set nombregm=GameMode

IF NOT EXIST "B_Backups" (mkdir B_Backups)
cd scriptfiles

:recursion
IF EXIST "batch.bk" (
	cd ..
	set fecha=%DATE%
	set horaa=%TIME%
	set dia=%fecha:~0,2%
	set mes=%fecha:~3,2%
	set hora=%horaa:~0,2%
	set minuto=%horaa:~3,2%
	set segundo=%horaa:~6,2%
	copy "./%carpetagm%\%nombregm%.%ext%" "./B_Backups/"
	cd B_Backups
	rename "%nombregm%.%ext%" "B_%hora%_%minuto%_%segundo%##%dia%_%mes%.pwn"
	IF EXIST "%nombregm%.%ext%" (del %nombregm%.%ext%)
	cd ..
	cd scriptfiles
	del batch.bk
	cls
)
goto recursion
#Fede escribió:
18 Nov 2018 10:58
...
Gracias, me sirvió a las maravillas, lastima que consuma bastante memoria, pero bueno... -thanks

¿Quién está conectado?

En total hay 1 usuario conectado :: 0 registrados, 0 ocultos y 1 invitado (basados en usuarios activos en los últimos 5 minutos)
La mayor cantidad de usuarios identificados fue 855 el 27 May 2018 00:03

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado