kongootto
Goto Top

Probleme bei drag und drop und Programmaufruf

Hallo Admins,

ich habe ein kleine Problem mit einem Batch Skript:

ich zeihe per drop und drag eine .csv Datei auf ein Batch Skript, welches dann wiederum ein Java Programm mit der .csv Datei und weiteren Datei (zusammengesetzt aus der ersten .csv Datei) als Parameter startet. Hier der Quellcode

@echo off & setlocal

set var0=%1
set var1=%var0:~7,24%
set var2=VAK0300%var1%


javaw.exe -jar vaksh.jar i% %var2%
pause

Am Anfang wird der zweite Parameter (var2) aus der übergebenen .csv Datei konstruiert; danach wird das Java Programm mit beiden Parametern gestartet. Wenn ich nun in der Eingabeaufforderung der Skript mit test.bat VAK0200_201102151566.csv startet funktioniert auch alles.

Wenn ich allerdings im Explorer die .csv Datei VAK0200_201102151566.csv auf die test.bat "ziehe" passiert nichts. Ich habe mir schon mit echo %CD% den aktuellen Pfad angeben lassen. Dort steht dann C:\Dokumente und Einstellungen\Benutzername. Das Skript liegt allerdings unter D:\Test. Ich habe leider keine Ahnung wie ich das Skript dazu kriegen kann, dass es bei "drag&drop" die .bat Datei mit den Parametern unter D:\Test startet.

Ich hoffe jemand von euch hat eine Idee.

Gruß & Danke
Kongootto

Content-Key: 162248

Url: https://administrator.de/contentid/162248

Printed on: April 24, 2024 at 23:04 o'clock

Member: bastla
bastla Mar 08, 2011 at 16:32:42 (UTC)
Goto Top
Hallo Kongootto und willkommen im Forum!
Ich habe leider keine Ahnung wie ich das Skript dazu kriegen kann, dass es bei "drag&drop" die .bat Datei mit den Parametern unter D:\Test startet.
Eigentlich würde ich ja den jeweiligen Elementen den benötigten Pfad voranstellen und sie damit vom Startort des Batches unabhängig machen, aber um Deine konkrete Frage zu beantworten:
@echo off & setlocal
pushd D:\Test

set var0=%1
set var1=%var0:~7,24%
set var2=VAK0300%var1%


javaw.exe -jar vaksh.jar i% %var2%
popd
pause
BTW: Eigentlich sollte auch
javaw.exe -jar vaksh.jar i% VAK0300%var0:~7%
ganz ohne %var1% und %var2% genügen (wobei ich mich allerdings noch frage, was es mit "i%" auf sich hat) ...
Noch eine Überlegung: Um aus "VAK0200_201102151566.csv" nur den Teil "_201102151566.csv" mit "VAK0300" zu kombinieren, wäre mE
for /f "tokens=1* delims=_") %%i in ("%~1") do set "var2=VAK0300_%%i"
durch die Unterteiilung am ersten vorkommenden "_" der sicherere Weg ...

Grüße
bastla
Mitglied: 76109
76109 Mar 08, 2011 at 16:53:38 (UTC)
Goto Top
Hallo Kongootto!

Anzumerken wäre aber noch, dass bei Drag&Drop der komplette Pfad der *.csv-Datei übergeben wird.

Von daher wäre bastlas letzte Variante zu empfehlen.

Gruß Dieter
Member: bastla
bastla Mar 08, 2011 at 17:01:41 (UTC)
Goto Top
Hallo Dieter!

Natürlich ließe sich bei der "Übernahme" in die Variable %var0% auch die Reduktion auf den Dateinamen einfach durchführen:
set "var0=%~nx1"
- allerdings beruht das Thema "Zerlegung" ja bisher nur auf einer Mutmaßung meinerseits ...

Grüße
bastla
Mitglied: 76109
76109 Mar 08, 2011 at 17:15:54 (UTC)
Goto Top
Hallo bastla!

Zitat von @bastla:
Natürlich ließe sich bei der "Übernahme" in die Variable %var0% auch die Reduktion auf den Dateinamen
einfach durchführen:
set "var0=%~nx1"
Auch ne Möglichkeitface-wink
- allerdings beruht das Thema "Zerlegung" ja bisher nur auf einer Mutmaßung meinerseits ...
Da habe ich wohl gleich gemutmaßtface-smile

Gruß Dieter
Member: Kongootto
Kongootto Mar 09, 2011 at 15:16:03 (UTC)
Goto Top
Hallo,

vielen Dank für die Hilfe; jetzt klappt es!
Falls es wen interessiert; so funktionert es.

<echo>
@echo off & setlocal

set var1=%~nx1
set var_tmp=%var1:~7,24%
set var2=VAK0300%var_tmp%

cd /D %~dp0

javaw.exe -jar vaksh.jar %var1% %var2% test
pause
</echo>

Das mit der Schleife hat leider nicht geklappt, aber evtl habe ich da auch einen Fehler gemacht.

Viele Grüße
Kongootto
Member: bastla
bastla Mar 09, 2011 at 15:24:18 (UTC)
Goto Top
Hallo Kongootto!

Wenn Du in "<echo>" ersatzweise das Codewort "code" verwendest, wird die Darstellung etwas angenehmer ... face-wink
Zur Sicherheit (für den Fall, dass die Batchdatei einmal in einem Ordner, dessen Pfad mindestens ein Leerzeichen enthält, zu liegen kommt) solltest Du
cd /D "%~dp0"
verwenden.
Das mit der Schleife hat leider nicht geklappt, aber evtl habe ich da auch einen Fehler gemacht.
Das kannst Du leicht nachvollziehen, indem Du das "echo off" vorübergehend in ein "echo on" änderst - so werden alle Befehle vorweg angezeigt ...

Grüße
bastla
Member: Kongootto
Kongootto Mar 14, 2011 at 11:04:40 (UTC)
Goto Top
Hallo nochmal,

habe das cd /D "%~dp0" jetzt umgesetzt.

Vielen Dank nochmal.

Gruß
Kongootto