116. Batch: die eigene Lage bestimmen oder %~dp0% versus %~sI

Einleitung

Wenn Sie bei Google Maps einen Zielort eingeben, ist es von Vorteil, wenn Sie ihre eigene Lage wissen. Was das GPS von einem Android-Smartphone ist, sind  für Batchschreiber zwei Kommandozeilen.
Der eine Befehl  liefert als Ausgabe den  Pfad, so wie Sie ihn kennen, der zweite Befehl einen  Pfad in DOS-Form.  Das ist  Spitze!

Dennoch gibt es bei beiden Befehlen kleine Hürden. Profis benutzen deshalb lieber den Pfad %temp% (Umgebungsvariable für den gültigen Pfad zum Tempordner, beim Sternenhimmelstuermer: C:\Users\Manfred Sternenhimmelstuermer\AppData\Local\Temp).


Tabelle

zur einfachen und schnellen Erklärung vielleicht eine Tabelle. User, die sich mit  der Frage der relativen Lage von Batches beschäftigen, dürften ja wissen, wie man Batches erstellt...

CMD
Batch
for %I in (.) do echo %~sI>zyx.txt
Gibt Pfad als Dospfad wieder


Als einfache cmd - Eingabe funktioniert der
Befehl nicht!
echo %~dp0%>pfad.txt

set destination=%~dp0%
echo %destination%>pfad.txt

Ausgabe:

C:\Users\Manfred Sternenhimmelstuermer\Desktop\pcbatches\lagerelativ\

 Der letzte Slash wird mit ausgegeben.
d. h., dass der Unterordner archiv ohne slash für die Ausgabe angehängt werden muss

set destination=%~dp0%
echo %destination%archiv>pfad.txt

Beliebter Fehler:

set destination=%~dp0%
echo %destination%>pfad.txt
set /p falschpfad=<pfad.txt
echo %falschpfad%\archiv >falschpfad.txt

Setzen Sie einen Backslash \ zu viel, dann haben Sie zwei Backslashs und die Batch funktioniert nicht






 
Der
Sternenhimmelstuermer spendiert mal zwei Zeilen Code, die Ihnen eine Liste sämtlicher Dokumente im DOS-Pfad gibt:
Die werden in eine Batch mit beliebigenNamen.bat gepackt. Die Dateiendung PDF müssen Sie bei anderen Dokumenten anpassen:

for /f "delims=" %%i in ('dir c:\*.pdf /s /b /a-d') do @echo %%i>>pfadliste.log
for /f "delims=" %%I in (pfadliste.log) do echo %%~sI>>dos.txt

Die erste Zeile holt sich vom Laufwerk C:\ alle Dateien mit der Endung pdf und schreibt deren Pfad in ein Dokument namens Pfadliste.log. Alle Unterordner werden dabei durchwühlt - das kann einen Moment dauern. Den Pfad können Sie beliebig anpassen und die Dateiendung auch. Sie könnten auch drei Sternchen als Wildcard für die Dateiendung verwenden - dann wird aber der Computer eine lange Zeit beschäftigt sein und das Logdokument riesengroß...nicht empfehlenswert.

Die zweite Reihe der Batch wandelt die Liste in DOS-Pfade um. Das haben Sie so noch nicht gesehen? Stimmt, ist ziemlich neu - Der Sternenhimmelstuermer kennt sich eben mit den Grundfunktionen von For-Befehlen aus...


Fazit: Mit dem  Befehl
for %%I in (.) do echo %%~sI  >zyx.txt liegen Sie immer richtig. Für den Hausgebrauch ist der andere Befehl die Lösung. Es ist eine Schande, dass der ursprünglich dafür konzipierte Befehl dir /x so unkomfortable im Handling und der Ausgabe ist, dass er gestrichen werden könnte.

Die letzte Batch für die Bestimmung von ganzen Listen mit DOS-Pfaden ist ein cooles Spielzeug - trifft zu 100 % den Pfad...DOS ist nicht tot...




Impressum
Datenschutz