Simplemente Batch

Publicada en Publicada en batch, Scripts

No sé que paso en esta semana, pero tome la decisión de comenzar a automatizar tareas. Y sí cuesta creerlo por el titulo pero lo hice simplemente con batch.
No suelo hacer esto pero inicialmente voy a dejar las fuentes, tanto como para que lean a otras personas así como también para que me queden cuál bookmark guardado:

Fuentes:
F2KO Software, esta página posee un set de script para usar. Particularmente use Bat To Exe Converter
http://www.f2ko.de/en/index.php
Para iniciarse en batch: http://www.robvanderwoude.com/batchstart.php
Otra página para iniciarse: http://steve-jansen.github.io/guides/windows-batch-scripting/part-1-getting-started.html
Ejemplos de scripts: http://luliserver.com.ar/?p=163
WGET: http://gnuwin32.sourceforge.net/packages/wget.htm

Les dejo un ejemplo de un script que arme. Este mismo es una especie de cliente de repositorio que hace la consulta al fileserver y descarga los instaladores en la terminal. Luego, sí el instalador lo permite, hace un silent install en la terminal. De esta manera inyecto en la terminal una linea de código para instalar nuevos programas o mantenerlos actualizados.

@ECHO off
::
:: repository-client
:: @created: 2016 04 26
:: @by: Pablo Gabriel Savoia
::

setlocal enabledelayedexpansion

title Repository

set ABS_PATH=%~dp0
set app=
set configFile=config.cmd

if not exist "%ABS_PATH%config.cmd" (

	echo To run %~n0, you must config %configFile%
	goto :EOF

) else (

	call "%ABS_PATH%%configFile%"

)

if {%1}=={/?} goto :HELP
if {%1}=={/update} goto :UPDATE
if {%1}=={/list} goto :LIST
if {%1}=={/install} goto :INSTALL
goto :HELP

:HELP
echo.Usage: %~n0.bat
echo.
echo./?		Help options.
echo./update 	Update all repository.
echo./list 		Show all install files.
echo./install 	Install file in silent mode.
echo.

goto :EOF

::IF %PROCESSOR_ARCHITECTURE% == x86 (
::
::        set app=%ProgramFiles%
::
::	) ELSE (
::
::        set app=%ProgramFiles(x86)%
::        set app=%app%)
::
::)


:UPDATE
:: echo Detected directory: %~dp0
:: %~d0
:: CD %~p0
:: CD %TEMP%

IF NOT EXIST C:\Windows\Temp\repository (

	md C:\Windows\Temp\repository

)

PUSHD C:\Windows\Temp\repository

if exist repository.list (

	del repository.list

)

%wget% %repository%repository.list

for /f "tokens=*" %%a in (repository.list) do (

	if not exist %%a (

		%wget% %repository%%%a

	)

)

POPD

goto :EOF


:LIST
IF NOT EXIST C:\Windows\Temp\repository (

	md C:\Windows\Temp\repository

)

PUSHD C:\Windows\Temp\repository

if exist repository.list (

	::for /f "delims=" %%D in ('dir /a: /b') do echo %%D
	for /f "tokens=*" %%a in (repository.list) do (

		echo %%a

	)

	POPD

) else (

	echo Ejecute %~n0.bat /update .

)

goto :EOF


:INSTALL
if not (%2)==() (

	if exist C:\Windows\Temp\repository\%2 (

		call C:\Windows\Temp\repository\%2 /silent

	) else (

		goto :UPDATE

		if exist C:\Windows\Temp\repository\%2 (

			call C:\Windows\Temp\repository\%2 /silent

		) else (

			echo Se ha actualizado la lista, no existe el instalador %2 en el repositorio.

		)


	)

) else (

	echo No ha ingresado el instalador.
	echo Ejecute %~n0.bat /list para elegir un instalador.

)

goto :EOF


:EOF
pause

Este script, consulta a un archivo config.cmd en donde se encuentran las variables de configuración.

set wget="%ABS_PATH%bin\wget.exe"
set repository=http://10.0.0.10/repository/

Y gracias al wget puedo hacer la descarga de los archivos. Lo pueden descargar de http://gnuwin32.sourceforge.net/packages/wget.htm