por Lógico (@LogicoDev)
11 de Octubre, 2018 ⏱ 05:30 PM

Como programadores nuestra máxima es: si algo hay que hacerlo 2 veces, entonces hay que automatizarlo. Es por eso que hoy queremos compartir una colección de scripts o comandos de Windows y Linux que usamos a diario y que pueden serles de utilidad.

Imágen de portada

Windows

Comprimir archivos con 7zip (cmd)

Este comando comprime todos los archivos de texto (.txt) de una carpeta con 7zip y el nombre de archivo de salida tiene la fecha y hora de creación en formato ARCHIVO_YYYY-MM-DD_HHMMSS.zip

"C:\Program Files\7-Zip\7z.exe" a -tzip C:\PATH_SALIDA\ARCHIVO-DB_%date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.zip C:\PATH_ORIGEN\*.txt

Ejecutar un comando (vbs)

Función para ejecutar un comando desde un script de vbs.

Function EjecutarComando(comando)
	' Ejecuta un comando de sistema
	' Argumento:
	'	comando	[string]	Comando a ejecutar
	'
	' Retorna:
	'	Codigo de salida del comando, generalmente 0 si termino OK, otro numero si fallo
	Set oShell = WScript.CreateObject ("WScript.Shell")
	EjecutarComando = oShell.run(comando,0,true)
End Function

Apagar el equipo (vbs)

Inicia el proceso de apagado del equipo, mostrando un cuadro de dialogo para que el usuario pueda cancelarlo. Si no hace click en el botón de cancelar, la computadora se apaga.

Dim objShell
Set objShell = CreateObject("WScript.Shell")
objShell.Run("shutdown /p /t 60")
Dim confirmation
	
confirmation = MsgBox("Este equipo se apagara en 1 minuto"  & vbCrLf  & vbCrLf & "Cancelar?", vbOKOnly + vbInformation, "Apagando sistema")

If (confirmation = 1) then
	objShell.Run("shutdown /a")
End if

Descargar archivo de internet (vbs)

Función para descarga un archivo de internet.

Sub HTTPDownload( myURL, myPath )
    dim xHttp: Set xHttp = createobject("Microsoft.XMLHTTP")
    dim bStrm: Set bStrm = createobject("Adodb.Stream")
    xHttp.Open "GET", myURL, False
    xHttp.Send

    with bStrm
        .type = 1 '//binary
        .open
        .write xHttp.responseBody
        .savetofile myPath, 2 '//overwrite
    end with
End Sub

HTTPDownload "https://SAMPLE.COM/archivo.zip","C:\PATH_SALIDA\archivo.zip"

Mostrar mensaje en área de notificación (powershell)

Muestra una notificación (Windows 10) o globo en área de notificación.

function Show-BalloonTip {
[cmdletbinding()]
param(
 [parameter(Mandatory=$true)]
 [string]$Title,
 [ValidateSet("Info","Warning","Error")]
 [string]$MessageType = "Info",
 [parameter(Mandatory=$true)]
 [string]$Message,
 [string]$Duration=10000
)

[system.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') | Out-Null
$balloon = New-Object System.Windows.Forms.NotifyIcon
$path = Get-Process -id $pid | Select-Object -ExpandProperty Path
$icon = [System.Drawing.Icon]::ExtractAssociatedIcon($path)
$balloon.Icon = $icon
$balloon.BalloonTipIcon = $MessageType
$balloon.BalloonTipText = $Message
$balloon.BalloonTipTitle = $Title
$balloon.Visible = $true
$balloon.ShowBalloonTip($Duration)

}

Show-BalloonTip -Title "Titulo de la notificación" -MessageType Info -Message "Esto es una prueba." -Duration 1000

Linux

Mostrar la IP local.

Si está conectado muestra la IP de la red local, si no informa DOWN.

#!/bin/bash
IS_UP="$(ip addr show enp3s0 | grep DOWN)"
IP="$(ip addr show enp3s0 | awk  '$1=="inet"{print $2}' | cut -d"/" -f 1)"

if [ -z "$IS_UP" ]
then
  echo "$IP  "
else
  echo "DOWN  "
fi

Identificar si es sesión local o SSH.

Identifica si la sesión actual es un equipo remoto o local.

#!/bin/sh
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
 /bin/echo -e "`pwd` @ `hostname` ⇨ \e[1;31mssh"
else
 echo "`pwd` @ `hostname`"
fi

Renombrar archivos a secuencia numérica.

Renombra todos los archivos de una extensión particular (.txt por ej) de un directorio a una secuencia numérica, manteniendo la extensión.

ls | cat -n | while read n f; do mv "$f" "$n.txt"; done 

Cambiar la extensión a todos los archivos.

Cambia la extensión de archivos manteniendo el mismo nombre de archivo. En el ejemplo se renombran todos los archivos de texto (*.txt) a markdown (.md)

for f in *.txt; do mv -- "$f" "${f%.txt}.md"; done

Portada

unsplash-logoRock'n Roll Monkey