Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Baumstrukturmodus | Linearer Modus
Verzeichnis in Batch Datei als Variable übergeben - batch datei argument übergeben
20-11-2007, 12:22
Beitrag: #1
Verzeichnis in Batch Datei als Variable übergeben - batch datei argument übergeben
Halloo,


Ich hab folgendes Problem !! Ich hab ein Konvertierungsprogramm, mitdem ich NC-Programme für Fräsmaschinen (eigentlich einfache Textdateien) in ein anderes Format konvertieren kann. Der Konverter ist ein Windows Konsolenprogramm und muss mit 2 Argumenten aufgerufen werden !! erstes Argument ist das gewünschte Format, 2. das Verzeichnis in dem die NC-Programme liegen !!!

Beispiel:

c:\convert.exe 1 c:\nc-programme


Jetzt würde ich mir gerne eine Batch Datei schreiben, wo das Verzeichnis als Variable übergeben wird, beispielsweise mach ich die Datei aufn Desktop, ziehe eine NC-Datei drauf und der Konverter wandelt alle Dateien in dem Verzeichnis um !!! Oder ne Verknüpfung an das "Senden an" Menü, ich klick eine NC Datei an, "Senden an" --> Konverter und er wandelt alle Dateien in dem Verzeichnis !!!

Also, ist es irgendwie möglich dass ich den Dateipfad der Datei die ich auf die Batch ziehe ohne Dateinamen als Argument an den Konverter zu übergeben ??

Danke schonmal für eure Hilfe !!

Gruß Dolzman !!!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27-11-2007, 17:30
Beitrag: #2
Verzeichnis in Batch Datei als Variable übergeben - batch datei argument übergeben
So, ich bins nochmal !!!

Kann mir wirklich keiner sagen wie ich das Verzeichnis der Zieldatei ohne Dateinamen als Variable bekomme ??

Ich habe jetzt folgende Batch Datei: Verzeichnis.bat

@ECHO. %1

Wenn ich jetzt vom Desktop die Datei test.txt auf die Batch ziehe bekomm ich als Variable %1 die Ausgabe:

"C:\Dokumente und Einstellungen\Dolzman\Desktop\test.txt"

Ich brauch jetzt aber nur den Pfad ohne Dateinamen und zwar so:

"C:\Dokumente und Einstellungen\Dolzman\Desktop"

Wäre Dankbar für Tipp´s, so schwer wird´s doch nicht sein oder ?? Hab leider noch nicht so den Durchblick bei Batch Variablen !!!

Gruß Dolzman
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28-11-2007, 19:49
Beitrag: #3
Verzeichnis in Batch Datei als Variable übergeben - batch datei argument übergeben
So, hab jetzt mal des halbe Internet zu dem Thema abgegrast, und nix passendes gefunden Sad
Das einzige was dem Thema etwas ähnelt is dieser Artikel:

Zitat:Mit Hilfe der Variablen %0 lässt sich der Dateiname der Batchdatei so wie er in der Befehlszeile angegeben wurde, abfragen (z.B. mit/ohne absolutem/relativem Pfad, mit/ohne Erweiterung etc.), d.h. %0 enthält exakt die Befehlszeile aber ohne Parameter. Falls die Batchdatei aus dem Explorer heraus mit Doppelklick gestartet wurde, beinhaltet %0 den Datei-namen mit komplettem (absolutem) Pfad (z.B. c:\windows\test.cmd); mit %0\.. lässt sich der Dateiname aus dem Pfad herauslösen (z.B. c:\windows). Um den Dateinamen mit vollständigem Pfad unabhängig vom Aufruf der Batchdatei zu ermitteln kann ?%~f0? verwendet werden (siehe CALL- / GOTO-Befehl).


So, jetzt brauch ich aber nicht den Pfad der Batch datei %0 Sondern den Pfad der Datei mit der ich die Batch aufrufen will %1 !!!!!

Wenn ich jetzt den Pfad einzeln haben will wie beschrieben und ich die Variable %1\.. einsetze, bekomm ich als Ergebnis:

"C:\Dokumente und Einstellungen\Dolzman\Desktop\Test.txt"\..

Wie bekomm ich den Pfad ohne Dateinamen ?????
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01-12-2007, 20:35
Beitrag: #4
Verzeichnis in Batch Datei als Variable übergeben - batch datei argument übergeben
Probiers mal mit:

FOR /F "tokens=4 delims=\" %%i in ("%fileName%") do @echo %%~dpi

%fileName% --> Datei mit Pfad: bei Dir die %1
tokens=4 --> die 4 besagt hier: nimm das vierte Token der Zeichenkette

weitere Infos unter cmd --> FOR /?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18-12-2007, 11:50
Beitrag: #5
Verzeichnis in Batch Datei als Variable übergeben - batch datei argument übergeben
Also wenn ich´s mit

@FOR /F "tokens=4 delims=\" %%I in ("%1") do @echo %%~dpI

versuche bringt er mir immer das Aktuelle Benutzerverzeichnis, obwohl %1 eigentlich die Variable für die rufende Datei ist !!!

wärend

@FOR /F "tokens=4 delims=\" %%I in ("%1") do @echo %%~fI

mir das Benutzerverzeichnis mit Dateinamen der rufenden Datei ausgibt, obwohl diese in einem anderen Verzeichnis liegt !! Passt also irgendwie nicht zusammen !!!

mit %fileName% geht mal garnix :confuse:
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19-12-2007, 13:43
Beitrag: #6
Verzeichnis in Batch Datei als Variable übergeben - batch datei argument übergeben
Hallo,

ich habe eine test.bat Datei geschrieben:

SET fileName=%1

FOR /F %%i in ("%fileName%") do @echo %%~dpi

Pause

und so aufgerufen:
test.bat K:\la\le\lu\h.txt

--> Ergebnis: K:\la\le\lu\

Gruß teenow
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19-12-2007, 19:45 (Dieser Beitrag wurde zuletzt bearbeitet: 19-12-2007 20:27 von Dolzman.)
Beitrag: #7
Verzeichnis in Batch Datei als Variable übergeben - batch datei argument übergeben
hi teenow


Danke, hat funktioniert !!! Jetzt hab ich nur das Problem dass verzeichnisse mit leerzeichen nicht ausgegeben werden, da die Anführungszeichen ja entfernt werden !!!

Ich benötige den Pfad also in umschliesenden Anführungszeichen und den ganzen Pfad möchte ich jetzt in einer Variable Speichern, damit ich damit ein anderes Porgramm mit dieser Pfadangabe als Argument aufrufen kann !!!

Nach möglichkeit sollte auch kein Backslash am Ende dran sein, etwa so:

"K:\la\le\lu" sonst müsste ich irhendwie mein anderes Programm umschreiben !!

Is dies irgendwie möglich ??
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20-12-2007, 13:49 (Dieser Beitrag wurde zuletzt bearbeitet: 20-12-2007 13:55 von Dolzman.)
Beitrag: #8
Verzeichnis in Batch Datei als Variable übergeben - batch datei argument übergeben
Hab grad gesehen, dass das ganze auch einfacher durch den Call Befehl funktioniert, hab eine Batchdatei mit

CALL %~dp1

Wenn ich jetzt ne Datei draufziehe gibt er mir den Pfad aus. nur hab ich da auch wieder ein problem dass Verzeichnisse mit leerzeichen nicht funktionieren !!! Wenn ich z.B. die Datei "D:\Eigene Dateien\Bilder\Test.jpg" draufziehe kommt als ergebnis

D:\Eigene

und ich bräuchte:

"D:\Eigene Dateien\Bilder"

Jemand ein Tipp wie ich die Verzeichnisse mit leerzeichen bekomm ???


EDIT:

Hab´s selbst rausgefunden :shades:

CALL "%~dp1"

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20-12-2007, 19:13
Beitrag: #9
Verzeichnis in Batch Datei als Variable übergeben - batch datei argument übergeben
So, jetzt hab ich´s endlich so wie´s sein soll :teeth:

Ich schreib jetzt mal der Volständigkeit halber wie ich´s gelöst habe !!

Aufgabenstellung:

Ich hab ein Konverter Programm dass ich mit dem Zielverzeichnis als Argument aufrufen muss, Zielverzeichnis soll als Variable übergeben werden Pfad liegt in der Variablen %1 allerdings muss der Dateiname weg !! Problem beim Konverter ist dass verzeichnisse mit leerzeichen in " " stehn müssen, aber der letzte Backslash führt zum Programmfehler !!


Lösung:

Die Riesen Befehlszeile mit FOR hat nicht wirklich was gebracht, war alles viel einfacher !! Die Variable %1 enthält den Pfad den ich brauche, leider auch den Dateinamen !! Mit %~dp1 erhalte ich nur den Pfad inkl. Laufwerksbuchstaben !! Jetzt hab ich das Problem mit den leerzeichen im Pfad. Entweder Leerzeichen weg und das ganze ohne Anführungszeichen ausgeben oder den letzten Backslash weg !!

Hab´s jetzt so gelöst dass ich kurze Pfadnamen verwende !!! (C:\Progra~1\Test. . . .) Mit %~dsp1 wird der Pfad in ein kurzen Namen umgewandelt, und diesen kann ich jetzt als Argument ohne Anführungszeichen an meinen Converter weitergeben :wink:


c:\convert.exe %~dsp1



Für alle die ein ähnliches Problem haben und Wochenlang suchen um so ne simple lösung zu finden :confused: :confused: :confused: :confused:



Wünsch euch allen schöne Weihnachtsfeiertage !!


Dolzman
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Tags
batch datei argument übergeben, batch pfad übergeben, verzeichnis an batch übergeben, batch datei pfad übergeben, batch variable mit leerzeichen übergeben, batch pfad als variable, batch verzeichnis variable, es werden wechseldatenträger angezeigt, net use verzögern, win 7 wechseldatenträger wird angezeigt ist aber nicht angeschlossen, tastenkombination von englisch auf deutsche tastatur, umstellung englische auf deutsche tastatur, tastenkombination englisch, abgesicherter modus pfeiltasten gehen nicht, spiele key nummer finden, sites
« Ein Thema zurück | Ein Thema vor »
Antwort schreiben 


  • Druckversion anzeigen
  • Thema einem Freund senden
  • Thema abonnieren
Gehe zu:




Kontakt | Windows Forum | Nach oben | Zum Inhalt | Archiv-Modus | RSS-Synchronisation| Impressum