WinFuture-Forum.de: Batch-Programmierung: Dateipfad extrahieren - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Batch-Programmierung: Dateipfad extrahieren


#1 Mitglied ist offline   joe13 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.809
  • Beigetreten: 10. September 09
  • Reputation: 123

geschrieben 25. September 2014 - 13:37

Hallo,

ich versuche grad, in einer Batch-Datei einen Dateipfad zu extrahieren und komme nicht recht weiter. Folgendes ist das Umfeld:
Beim Export eines Bildes mit Lightroom kann ich eine Aktion aufrufen, z.B. eine Batch-Datei. Die Aktion liefert beim Aufruf als Argument den exportierten Dateinamen incl. des Pfades.
Mit set Datei=%1 bekomme ich den Namen in eine Variable. Daraus will ich den Dateipfad extrahieren.
Erster Versuch - set Datei=%Datei:~0,-1% kürzt die Variable um das letzte Zeichen, schonmal ein Anfang.
Zweiter Versuch - das folgende Konstrukt soll mir die Variable solange verkürzen bis ich auf den Backslash treffe, der Pfad und Dateiname trennt.

:start
set Datei=%Datei:~0,-1%
if %Datei:~-1%=="\" goto ende
if not %Datei:~-1%=="\" goto start
pause
:ende
echo %Datei%
pause



Das funktioniert aber leider nicht; die Schleife läuft wohl, aber der Sprung nach "ende" sowie die Ausgabe des Wertes und die Pause sehe ich nicht.


Weiß jemand weiter? Meine Batch-Kenntnisse sind wohl etwas eingerostet ... :)

Joe
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...
0

Anzeige



#2 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.895
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 25. September 2014 - 14:15

Wenn ich Dich richtig verstehe, brauchst Du den p-Modifikator, ggf. mitsamt d.

D= Drive
P= Path

sodaß Du für Variable n mit %~dpn den LW-Buchstaben und den Pfad rausbekommst.
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#3 Mitglied ist offline   joe13 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.809
  • Beigetreten: 10. September 09
  • Reputation: 123

geschrieben 25. September 2014 - 18:57

Das mit %dpi ist aber Teil von FOR-Schleifen.
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...
0

#4 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.895
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 25. September 2014 - 19:39

Nicht ganz. Das funktioniert mit jedem Parameter, also auch mit %~dp1 zum Beispiel, wenn %1 eine existierende Datei war.
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#5 Mitglied ist offline   uberis 

geschrieben 25. September 2014 - 20:19

Hallo joe13,

dein Batch ist fast korrekt, es fehlt nur eine Kleinigkeit:

:start
set Datei=%Datei:~0,-1%
if "%Datei:~-1%"=="\" goto ende
if not "%Datei:~-1%"=="\" goto start
pause
:ende
echo %Datei%
pause



Bei Vergleichen sollte die zu vergleichende Variable auch in Hochkommata gesetzt werden wie der Vergleichsstring.
1

#6 Mitglied ist offline   Shannon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 131
  • Beigetreten: 12. Februar 13
  • Reputation: 11
  • Geschlecht:unbekannt

geschrieben 25. September 2014 - 20:44

set PNAME=%~dp0
echo  %PNAME%


und gut

g.s.
0

#7 Mitglied ist offline   joe13 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.809
  • Beigetreten: 10. September 09
  • Reputation: 123

geschrieben 25. September 2014 - 22:53

@uberis
Das ist es. Hab's inzwischen selbst rausgefunden; die Syntax ist wirklich gewöhnungsbedürftig.
Irritiert hat mich, daß die Schleife
if not %Datei:~-1%=="\" goto start
ja funktionierte, sonst wär's mir eher aufgefallen. Aber klar, der Vergleich geht halt mit & ohne "" nicht auf.



@RalphS
Noch einfacher.


Danke an alle die sich bemüht haben.
Falls jemand Interesse am Ergebnis hat:
:export.bat	25.9.14
: Lightroom-Export-Aktion - aktuelles Verzeichnis aufsuchen
:   und Batch mit exiftool aufrufen

: Übergabeparameter lesen & daraus Pfad ermitteln

SET String= %~dp1 

D:
CD %String%

:exiftool Script
etLR.bat


Der letzte Batch-Aufruf führt zu einem exiftool-Script, mit dem ich die im Zuge von Bildbearbeitungen vermurksten Exif-Daten wieder so herrichte, daß Buldbetrachter sie darstellen können.


Joe

Dieser Beitrag wurde von joe13 bearbeitet: 26. September 2014 - 09:50

Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0