Da ich es auf einigen Rechnern ausrollen muss, gerne einmal mein Script dafür, ihr müsst es nur einmal ausführen und die midopen.cmd wird in den windows ordner geschrieben, ihr könnt die Message-ID in diversen Formaten direkt über "midopen" verwerden, z.B. so:
CMD öffnen:
midopen 1764...@mail.tld
midopen "1764...@mail.tld"
midopen "<1764...@mail.tld>"
Was nicht geht, da CMD <> als als stdin und stdout verarbeitet:
midopen <1764...@mail.tld>
Code
# Installationsanweisungen:
# Lege die midopen.ps1 z.B. in c:\temp (den gesamten Code einfach in die midopen.ps1 kopieren)
# öffne cmd als admin
# navigiere nach c:\temp
# führe [powershell.exe -ExecutionPolicy Bypass -File .\midopen.ps1] aus.
param(
[string]$TargetPath = "C:\Windows\midopen.cmd"
)
Write-Host "=== midopen Installer ===" -ForegroundColor Cyan
# Admin Check
$principal = New-Object Security.Principal.WindowsPrincipal(
[Security.Principal.WindowsIdentity]::GetCurrent()
)
if (-not $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Write-Host "Bitte dieses Script als Administrator ausführen!" -ForegroundColor Red
exit 1
}
# Inhalt von midopen.cmd
$midopenContent = @'
@echo off
REM midopen.cmd, öffnet eine Mail per Message-ID in Betterbird oder Thunderbird
setlocal EnableExtensions EnableDelayedExpansion
REM Client suchen (Betterbird hat Priorität bei mir, könnt hier aber selbst die reihenfolge ändern)
set "CLIENT="
if exist "C:\Program Files\Betterbird\betterbird.exe" set "CLIENT=C:\Program Files\Betterbird\betterbird.exe"
if not defined CLIENT if exist "C:\Program Files (x86)\Betterbird\betterbird.exe" set "CLIENT=C:\Program Files (x86)\Betterbird\betterbird.exe"
if not defined CLIENT if exist "C:\Program Files\Mozilla Thunderbird\thunderbird.exe" set "CLIENT=C:\Program Files\Mozilla Thunderbird\thunderbird.exe"
if not defined CLIENT if exist "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe" set "CLIENT=C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe"
if not defined CLIENT (
echo Kein Betterbird oder Thunderbird in den Standardpfaden gefunden.
exit /b 1
)
REM Prüfen ob Argument vorhanden ist
if "%~1"=="" (
echo.
echo Nutzung: midopen MESSAGE-ID
echo Beispiele:
echo midopen 1764...@mail.tld
echo midopen "1764...@mail.tld"
echo midopen "<1764...@mail.tld>"
echo.
echo Hinweis: In CMD muessen spitze Klammern gequotet oder escaped werden:
echo midopen "^<1764...@mail.tld^>"
exit /b 1
)
REM Erstes Argument holen (%~1 entfernt äußere anführungszeichen)
set "ID=%~1"
REM Umgebende spitze Klammern entfernen
REM ToDO: ggf. noch über powershell verbessern, damit auch midopen <1764...@mail.tld> eingegeben werden kann.
if defined ID (
if "!ID:~0,1!"=="<" set "ID=!ID:~1!"
if "!ID:~-1!"==">" set "ID=!ID:~0,-1!"
)
REM Betterbird/ oder Thunderbird mit mid:-URI aufrufen
"%CLIENT%" "mid:!ID!"
endlocal
'@
# Datei schreiben
Write-Host "Schreibe $TargetPath ..." -ForegroundColor Cyan
Set-Content -Path $TargetPath -Value $midopenContent -Encoding ASCII -Force
Write-Host "Fertig. midopen.cmd wurde erstellt." -ForegroundColor Green
Write-Host "Du kannst jetzt in einer neuen CMD z.B. testen:" -ForegroundColor Yellow
Write-Host ' midopen "<DEINE-MESSAGE-ID>"'
Alles anzeigen
wenn ihr im CMD nur midopen eingebt, bekommt ihr eine kleine "Hilfe".