Skip to content

Instantly share code, notes, and snippets.

param(
[Parameter(Mandatory = $true, Position = 0)]
[string]$OvpnFile,
[Parameter(Mandatory = $true, Position = 1)]
[string]$CaFile,
[Parameter(Mandatory = $true, Position = 2)]
[string]$CertFile,
@eugrus
eugrus / Rename-Mails.ps1
Last active July 14, 2026 15:44
Normalize filenames of .eml and .msg to date, sender, title
param(
[string]$Path = '.',
[switch]$WhatIf,
[switch]$Force
)
if (-not ('MsgReader' -as [type])) {
Add-Type -TypeDefinition @'
using System;
using System.Text;
param(
[string]$Path = '.',
[switch]$WhatIf
)
if (-not ('MsgReader' -as [type])) {
Add-Type -TypeDefinition @'
using System;
using System.Text;
using System.Runtime.InteropServices;
<mso:cmd app="Word" dt="1" /><mso:customUI xmlns:mso="http://schemas.microsoft.com/office/2009/07/customui"><mso:ribbon><mso:qat><mso:sharedControls><mso:control idQ="mso:AutoSaveSwitch" visible="true"/><mso:control idQ="mso:FileOpenUsingBackstage" visible="false" insertBeforeQ="mso:FileNewDefault"/><mso:control idQ="mso:FileSave" visible="true" insertBeforeQ="mso:FileNewDefault"/><mso:control idQ="mso:FileSendAsAttachment" visible="false" insertBeforeQ="mso:FileNewDefault"/><mso:control idQ="mso:FilePrintQuick" visible="false" insertBeforeQ="mso:FileNewDefault"/><mso:control idQ="mso:PrintPreviewAndPrint" visible="false" insertBeforeQ="mso:FileNewDefault"/><mso:control idQ="mso:ReadAloud" visible="false" insertBeforeQ="mso:FileNewDefault"/><mso:control idQ="mso:Undo" visible="true" insertBeforeQ="mso:FileNewDefault"/><mso:control idQ="mso:RedoOrRepeat" visible="true" insertBeforeQ="mso:FileNewDefault"/><mso:control idQ="mso:TableDrawTable" visible="false" insertBeforeQ="mso:FileNewDefault"/><mso:control idQ=
@eugrus
eugrus / Abs.-Nr.regex
Last active June 17, 2026 13:41
(1), (2), (3), ...
[ \t]*\(\d+\)[ \t]*
Get-ChildItem | Where-Object Name -match '^(?<d>\d{2})\.(?<m>\d{2})\.(?<y>\d{4}) (?<h>\d{2})\.(?<min>\d{2}) ' | Rename-Item -NewName {('{0}-{1}-{2}_{3}.{4} ' -f $matches.y,$matches.m,$matches.d,$matches.h,$matches.min) + $($_.Name.Substring($matches[0].Length))}
Get-ChildItem -LiteralPath $PWD -Recurse -File | Move-Item -Destination { Join-Path (Convert-Path $PWD) ( $_.FullName.Substring((Convert-Path $PWD).Length + 1) -replace '[/\\]', '_' ) }
@eugrus
eugrus / ytcc.ps1
Created June 2, 2026 18:00
wrapper for yt-dlp to download subtitles from YouTube
yt-dlp --cookies "$env:USERPROFILE\Videos\www.youtube.com_cookies.txt" --skip-download --write-subs --sub-langs "$($(if ($args.Count -ge 2 -and $args[1]) { $args[1] } else { 'en' })).*" --remote-components ejs:github "$args[0]"
from PIL import ImageGrab, Image
import pytesseract
import sys
import os
data = ImageGrab.grabclipboard()
if data is None:
sys.exit("No image in clipboard.")
@eugrus
eugrus / ctrlU.js
Created April 29, 2026 11:07
Deactivate Ctrl+U capturers
(() => {
const targets = [window, document, document.documentElement, document.body].filter(Boolean);
const eventTypes = ['keydown', 'keypress', 'keyup'];
const backup = [];
for (const t of targets) {
backup.push({
target: t,
onkeydown: t.onkeydown,
onkeypress: t.onkeypress,