Absolute Pfade in Batch und Bash-Skripten zum Aufruf aus anderen Ordnern heraus verwenden: Pfad des Skriptes statt Aufrufers ermitteln

Absolute Pfade in Batch und Bash-Skripten zum Aufruf aus anderen Ordnern heraus verwenden: Pfad des Skriptes statt Aufrufers ermitteln

Wenn man Skripte über den absoluten Pfad aufruft, müssen alle Aufrufe innerhalb des Skriptes ebenfalls absolut sein. Ansonsten funktioniert der Aufruf nur, sofern man zunächst in das Skriptverzeichnis wechselt und das Skript von dort ausführt. Je nach Anwendungszweck kann das passabel sein. Doch besser ist es, diesen Anwendungsfall direkt zu bedenken. Hierfür benötigt man nur den Pfad des Skriptes, der jeglichen Aufrufen vorangestellt wird. Dann spielt es keine Rolle, ob man sich im Arbeitsverzeichnis befindet oder nicht.

Folgender Artikel soll dies für die Linux-Bash zeigen, aber auch Batch-Skripte für Windows. Im Beispiel verwenden wir eine ausführbare Datei ffmpeg, die sich im Ordner des jeweiligen Skriptes befindet.

Skript-Pfad unter Linux Bash ermitteln

Unter Linux liefert uns dirname „$0“ den Ordnerpfad zum aktuellen Skript.

#!/bin/bash
cwd=$(dirname "$0")
${cwd}/ffmpeg

Skript-Pfad unter Windows Batch ermitteln

Bei Windows Batch wird es etwas kryptischer. Hier führt uns die Variable %~dp0 zum Ziel.

@echo "Check ffmpeg version"
@set cwd=%~dp0
%cwd%ffmpeg -version
pause

Leave a Reply