danihopera/BatchMacro recortar cabecera de podcastObtener el nombre de archivo y meter troceado en variablesObtener el feed RSS de un canal de YouTubeOperadoresDescargar radio streaming con fecha automática y WgetModificar un texto en varios archivosPersonalizar hojas de Rocketbook con Magick y QpdfObtener acceso directo de archivos en .cmd (en lugar de .lnk)Poner título a una ventana .cmdVectorizar imágenes con Magick, mkBitmap y PotraceMosaico de instrucciones con marco en viñetas con MagickPreguntar para añadir valor a una variableProblema con los acentosComprimir con 7zip en línea de comandos #ObsidianExtraer audio mp3 de un vídeo mp4 con ffmpegCrear ochifolios con MagickCrear trentidosfolios con MagickCrear imágenes 3D ojos cruzados con MagickConvertir texto a imagen con MagickAñadir texto a imágenes automáticamente con MagickCrear copia de estructura de carpetas completa con Xcopy
Web con ejemplos batch para pasar:
https://gist.github.com/cags84/7ea0d74cde2e53409ccb91ba506d1543
https://es.stackoverflow.com/questions/49150/coger-substring-en-cada-linea-de-un-fichero-en-cmd
x@echo off
rem Ejecutar -> Quitamede.cmd nombre.mp3
rem nn = segundos para quitar desde el inicio
set QuitaSegundos=195
set NombreArchivo=%~n1
set ExtensionArchivo=%~x1
set Archivo=%NombreArchivo%%ExtensionArchivo%
echo %Archivo%
\APLI\ffmpeg\bin\ffmpeg.exe -ss %QuitaSegundos% -i "%Archivo%" -acodec copy x"%Archivo%"
xxxxxxxxxx
set NombreArchivo=%~n1
set ExtensionArchivo=%~x1
set RutaCorta=%~s1
Set Atributos=%~a1
Set Fecha=%~t1
Set Tamano=%~z1
set RutaArchivo=%~f1
set Disco=%~d1
set SoloRuta=%~p1
set ano=%NombreArchivo:~5,2%
set mes=%NombreArchivo:~8,2%
set semana=%NombreArchivo:~11,2%
echo %NombreArchivo%
echo %ano%
echo %mes%
echo %semana%
El parámetro %~n1 toma el nombre del archivo soltado encima del icono de la macro El parámetro %NombreArchivo:~5,2% indica que tome 2 caracteres de la posición 5
Nota: El nombre de archivo es del archivo soltado encima de la macro.
Ir a la página para gestionar las suscripciones: https://www.youtube.com/subscription_manager En la lista sobre la foto botón derecho, copiar url y pegar después del = según sea user o channel
26/04/2023 - Parece que ahora basta con poner directamente el nombre del canal. Ej. https://www.youtube.com/@BorjaBandera
Canales con user: https://www.youtube.com/feeds/videos.xml?user=
Canales con channel: https://www.youtube.com/feeds/videos.xml?channel_id=
EQU, que es el equivalente a ==
NEQ, Sirve para comprobar que No es Igual.
LSS, Para verificar si el numero es Menor
LEQ, Para verificar si es menor o igual.
GTR, Si es mayor
GEQ, Si es Mayor e igual.
xxxxxxxxxx
if %edad% LEQ 0 goto:error
if %edad% LEQ 12 goto:chico
if %edad% LEQ 18 goto:adolecente
if %edad% LSS 45 goto:adulto
goto:anciano
Como no se puede dividir los archivos descargados ni saber quién es el autor o música que suena he optado por bajar a saco los minutos de la web utilizando wget:
xxxxxxxxxx
@echo off
set HORA_COMPLETA=%TIME%
set HORA=%HORA_COMPLETA:~0,2%
set HORA=%HORA: =%
set MINUTOS=%HORA_COMPLETA:~3,2%
set SEGUNDOS=%HORA_COMPLETA:~6,2%
set ANO=%Date:~6,4%
set MES=%Date:~3,2%
set DIA=%Date:~0,2%
if %HORA% LSS 10 set HORA=0%HORA%
set NombreArchivo=%ANO%%MES%%DIA%%HORA%%MINUTOS%%SEGUNDOS%.mp3
wget http://pianosolo.streamguys.net/live -O %NombreArchivo%
Hay que tener un archivo de texto rango.txt donde esté la ruta completa de los archivos a modificar y estas dos macros:
Macro para ejecutar:
xxxxxxxxxx
@ECHO off
SETLOCAL enabledelayedexpansion
TITLE 20/04/2021 Cambiando ruta relativa por ruta absoluta
REM [Dentro del los FOR hay que utilizar !x! en lugar de %x%]
REM [Para trocear una variable utilizamos !var:~0,2! el primer dígito es la posición el segundo el tamaño]
REM [Los tokens sirve para guardar en variables consecutivas %a,%b,%c, etc los tokens 1,2,3 separados por espacios por defecto]
REM Ojo con los nombres con espacio en blanco
REM Pasamos las líneas de rango.txt a variabless
for /F "tokens=1" %%a in (rango.txt) do (
SET linea=%%a
SET ruta= !linea:~0,500!
REM Quitamos el espacio en blanco que hay después de la variable
SET ruta=!ruta: =!
call MacroCambiar.cmd !ruta!
rem echo !ruta!
)
Macro para llamar:
xxxxxxxxxx
@echo off
set pal1-old=F:\
set pal1-new=\\Servidordatos\Corporativo\Gestrisam\Sanciones\
rem set pal2-old=
rem set pal2-new=
set file=%1
copy %1 %1.rel
rem echo Muestro el Archivo de texto Original
rem echo --------------------------------------
rem type %file%
rem echo --------------------------------------
for /f "tokens=*" %%a in (%file%) do call :wri %%a
type "%file%.bak" > "%file%"
del /f /q /a "%file%.bak"
rem echo.
rem echo Muestro el Archivo ya modificado
rem echo --------------------------------------
rem type %file%
rem echo --------------------------------------
rem pause
rem exit
type %file% >> resultado.txt
goto :eof
:wri
set lin=%*
call set lin=%%lin:%pal1-old%=%pal1-new%%%
rem call set lin=%%lin:%pal2-old%=%pal2-new%%%
echo %lin%>>"%file%.bak"
goto :eof
Utilizando ImageMagick creo una imagen vacía de 100x100 para pintar el patrón.
xxxxxxxxxx
magick -size 100x100 xc:white _Cuadro.png
Con Paint pinto un diseño en color gris claro.
Utilizando ImageMagick creo una imagen tamaño A4 (2480x3508) con el patrón creado.
xxxxxxxxxx
convert -size 2480x3508 tile:_Cuadro.png _Contenido.png
Imprimo el _Contenido.png a Contenido.pdf con los márgenes Arriba: 2.13 Abajo: 4.25 Drcha./Izda.: 1.30 y en tamaño Encajar en la página y marcar Auto-Crop.
Colocamos el archivo Contenido.pdf en la carpeta de trabajo junto con el archivo de la Rocketbook, lo renombramos a Fondo.pdf.
Utilizando qpdf fusionamos el Fondo.pdf con el Contenido.pdf y obtenemos Fusionado.pdf
xxxxxxxxxx
qpdf --overlay temp\Contenido.pdf --to=1 --from=1 -- temp\Fondo.pdf temp\Fusionado.pdf
Copiamos Fusionado.pdf a Fusionado2.pdf y creamos un documento de doble cara.
xxxxxxxxxx
qpdf --empty --pages temp\*.pdf -- temp\salida.pdf
xxxxxxxxxx
echo D:\documentos\2019\0\0\0\2019000001.zip > 2019000001.cmd
Esto creará un archivo .cmd que al ejecutarlo mostrará la carpeta donde se encuentra el archivo. La idea es crear un archivo .cmd que genere un enlace para cada .zip de la carpeta, es decir, primero obtenemos un listado con dir /b > lista.txt; Editamos lista.txt y añadimos la ruta donde se guarda el archivo, tantos echo como archivos haya.
xxxxxxxxxx
TITLE Título de la ventana
xxxxxxxxxx
@echo off
set ancho=800
set paint=6
set t=3
set nombrearchivo=a
echo ConvertirJpgBmpPbmSvgPng
echo **************************CONVERTIR EN BMP*******************************
APLI\magick convert %nombrearchivo%.* -resize %ancho%x%ancho% -type truecolor %nombrearchivo%_.bmp
APLI\magick convert %nombrearchivo%.* -resize %ancho%x%ancho% -paint %paint% -type truecolor %nombrearchivo%001.png
echo **************************OBTIENE PBM******************************
APLI\mkbitmap -f 3 -s 2 -t 0.47 %nombrearchivo%_.bmp
echo **************************OBTIENE SVG DE PBM*****************************
APLI\potrace -t %t% --svg %nombrearchivo%_.pbm -o %nombrearchivo%1.svg
rem -t (2) suprimir manchas; -k (0.5) negro de corte /blanco; -a (1) umbral esquina;-n (0.2) optimización curva;-u (10) cuantización salida a 1;
echo **************************CONVERTIR EN PNG*******************************
APLI\magick convert %nombrearchivo%1.svg -resize %ancho%x%ancho% %nombrearchivo%_devector1.png
echo **************************CONVERTIR EN PNG FONDO TRANSPARARENTE**********
APLI\magick convert %nombrearchivo%_devector1.png -transparent white %nombrearchivo%_devectorsinfondo.png
echo **************************FUSIONAR IMÁGENES**********
APLI\magick convert %nombrearchivo%001.png %nombrearchivo%_devector1.png -compose multiply -composite z001.png
APLI\magick convert z001.png -bordercolor black -border 10 zfinal1.png
APLI\magick convert z001.png -bordercolor black -border 10 -colors 256 zfinal2.gif
xxxxxxxxxx
@echo off
set ancho=800
echo ConvertirJpgBmpPbmSvgPng
echo **************************CONVERTIR EN PNG*******************************
APLI\magick convert 001.* -resize %ancho%x%ancho% -type truecolor -bordercolor black -border 20 B001.png
APLI\magick convert 002.* -resize %ancho%x%ancho% -type truecolor -bordercolor black -border 20 B002.png
APLI\magick convert 003.* -resize %ancho%x%ancho% -type truecolor -bordercolor black -border 20 B003.png
APLI\magick convert 004.* -resize %ancho%x%ancho% -type truecolor -bordercolor black -border 20 B004.png
APLI\magick convert 005.* -resize %ancho%x%ancho% -type truecolor -bordercolor black -border 20 B005.png
APLI\magick convert 006.* -resize %ancho%x%ancho% -type truecolor -bordercolor black -border 20 B006.png
APLI\magick convert 007.* -resize %ancho%x%ancho% -type truecolor -bordercolor black -border 20 B007.png
APLI\magick convert 008.* -resize %ancho%x%ancho% -type truecolor -bordercolor black -border 20 B008.png
echo ************************MOSAICO 4X2**************
APLI\magick montage B*.png -tile x4x2 -geometry 300x170+9+9 Z.png
APLI\magick convert Z.png -bordercolor white -border 20 Z1.png
xxxxxxxxxx
set/p variable=Introduce la pregunta :
Cuando tengo que mostrar en pantalla palabras con tildes o ñ aparece símbolos extraños.
xxxxxxxxxx
ej. ¢ para la ó
Solución mala:
Utilizar al escribir las tildes el símbolo extraño equivalente.
ej. en lugar de escribir camión escribir cami¢n de esta manera cuando se vuelque en pantalla aparecerá escrito camión correctamente.
El problema es que hay que tener un diccionario para copipegar esos símbolos.
Solución menos mala:
Convertir a UCS-2 Little Endian (UCS-2 LE BOM)
Ejecutar en la consola el comando:
xxxxxxxxxx
type archivounicode.cmd > archivounicodeacentos.cmd
Esto convertirá directamente las palabras con tildes y ñ en su equivalente en símbolo extraño para no tener que andar con el diccionario de copipega.
Fuente: borrame.com/recortes/batch/fecha-y-hora.html
CopiaSeguridad.cmdCopiaSeguridad.cmd
xxxxxxxxxx
set HORA_COMPLETA=%TIME%
set HORA=%HORA_COMPLETA:~0,2%
set HORA=%HORA: =%
set MINUTOS=%HORA_COMPLETA:~3,2%
set SEGUNDOS=%HORA_COMPLETA:~6,2%
set ANO=%Date:~6,4%
set MES=%Date:~3,2%
set DIA=%Date:~0,2%
if %HORA% LSS 10 set HORA=0%HORA%
"C:\Program Files\7-Zip\7z.exe" a -spf e:\temp\_%ANO%%MES%%DIA%%HORA%%MINUTOS%_seguro.7z
Comprimir:
xxxxxxxxxx
a
Mantener estructura de directorio:
xxxxxxxxxx
-spf
Fecha y tiempo invertido. Ej. 201909260001
xxxxxxxxxx
%Date:~6,4%%Date:~3,2%%Date:~0,2%%Time:~0,2%%Time:~3,2%
NOTA: No funciona bien con la hora de un solo dígito, de ahí que lo haga con una macro cmd.
xxxxxxxxxx
ffmpeg -i "vídeo.mp4" -vn -ab 160k -ar 44100 -y "audio.mp3"
xxxxxxxxxx
magick 001.png -rotate 180 001i.png
magick 006.png -rotate 180 006i.png
magick 007.png -rotate 180 007i.png
magick 008.png -rotate 180 008i.png
magick montage -background #000000 -tile 4x2 -geometry +1+1+1+1 002.png 003.png 004.png 005.png 001i.png 008i.png 007i.png 006i.png mosaico.png
del 001i.png
del 006i.png
del 007i.png
del 008i.png
pause
exit
xxxxxxxxxx
magick 009.png -rotate 180 009.png
magick 008.png -rotate 180 008.png
magick 003.png -rotate 180 003.png
magick 002.png -rotate 180 002.png
magick 018.png -rotate 180 018.png
magick 019.png -rotate 180 019.png
magick 020.png -rotate 180 020.png
magick 021.png -rotate 180 021.png
magick 015.png -rotate 180 015.png
magick 012.png -rotate 180 012.png
magick 005.png -rotate 180 005.png
magick 006.png -rotate 180 006.png
magick montage -background #000000 -geometry +1+1+1+1 027.png 013.png 014.png 028.png 031.png 012.png 015.png 029.png 032.png 007.png 004.png 030.png 025.png 006.png 005.png 026.png _mosaico2.png
magick montage -background #000000 -geometry +1+1+1+1 022.png 023.png 024.png 017.png 009.png 008.png 003.png 002.png 010.png 011.png 016.png 001.png 021.png 020.png 019.png 018.png _mosaico1.png
pause
exit
xxxxxxxxxx
magick montage -background #000000 -geometry +1+1 d.* i.* _3d.png
d: imágen derecha
i: imágen izquierda
xxxxxxxxxx
magick -font Arial -pointsize 72 label:"Texto" _titulo.png
xxxxxxxxxx
magick 001.png -fill red -font Arial -pointsize 72 -gravity South -annotate -10+8 "001" 001.png
-gravity -> South, Center o North
fuente: linuxcenter
1º Hay que crear la estructura de carpetas.
xxxxxxxxxx
XCOPY F:\ARCHIVO\2021\4\8\8\2021488639\20200816_R2020_435578-01_E2021_488639_TALG_IMPUGALMU_2020_1027 C:\TEMP\ARCHIVO\2021\4\8\8\2021488639\20200816_R2020_435578-01_E2021_488639_TALG_IMPUGALMU_2020_1027 /t /e
El parámetro /t copia la estructura de directorios únicamente y /e para que incluya los directorios vacíos.
2º Se copia los archivos en la estructura de carpetas creada.
xxxxxxxxxx
COPY F:\ARCHIVO\2021\4\8\8\2021488639\20200816_R2020_435578-01_E2021_488639_TALG_IMPUGALMU_2020_1027\*.* C:\TEMP\ARCHIVO\2021\4\8\8\2021488639\20200816_R2020_435578-01_E2021_488639_TALG_IMPUGALMU_2020_1027"
Interesante la parte del manual de uso del xcopy vienen ejemplos del control de errores en la copia. Ver si es posible que cuando detecte un error no sobreescriba el archivo y lo pase a un archivo de errores.
fuente: Microsoft