destry
Goto Top

(DOS-Batch) Ein kaufmännisches Und-Zeichen in den Übergabeparametern

Hallo allerseits,

ich bekomme von einem Programm zwei Dateinamen, getrennt durch *, geliefert.
Ein Weiterverabeitung soll durch eine DOS-Batch-Datei erfolgen.

Wenn nun in den Dateinamen ein "&" drin ist, geht die Parameterübergabe an die Batchdatei schief.

Beispiel: Tu_was.bat Erste_Datei.txt*Zweite&letzte_Datei.txt

In der Batchdatei sollen die Parameter mit %1 und %2 aufgelöst werden. Doch der zweite Parameter wird vor dem "&" abgeschnitten und verstümmelt.
Ich kann die Übergabeparameter nicht in Hochkommatas stellen, was normalerweise helfen würde. Darauf habe ich keinen Einfluss.
Die Auflösung von %* bringt auch nur "Erste_Datei.txt*Zweite".

Habt Ihr eine Idee ob man da was machen kann?

Gruss,
Destry

Content-ID: 110992

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

Ausgedruckt am: 26.11.2024 um 05:11 Uhr

miniversum
miniversum 10.03.2009 um 14:16:18 Uhr
Goto Top
Wenn du keinen Einfluss auf diese Ausgabe (in Hochkomma) hast kansn tdu dann wenigstens diese Ausgabe in eine Datei umleiten?
Diese datei könntest du dann in der Batch wieder einlesen und anschließend löchen lassen. So würde sie nur temponär existieren und das & wäre kein Problem.
Das ist das einzige was mir so spontan dazu einfällt jetzt.
Destry
Destry 10.03.2009 um 14:25:09 Uhr
Goto Top
Danke für den Tipp, aber geht leider nicht.
Die Übergabe ist sehr eingeengt. Genauer gesagt sieht sie so aus:

%F %H

%F steht für die Quelldatei. %H steht für die Zieldatei.
Ich kann dabei zwar eigene Zeichen setzen, wie: %F*%H, aber leider keine Hochkommatas.
Also: "%F"*"%H" oder "%F*%H" führt dazu das gar keine Parameter mehr übergeben werden.
Was geht wäre: '%F'*'%H'. Aber damit ändert sich nichts bei der Batch. Nur ' reicht nicht.

Danke für den Versuch.

Gruss,
Destry
miniversum
miniversum 10.03.2009 um 18:16:00 Uhr
Goto Top
Dann wäre da noch die möglichkeit die datei zuerst umbenenne bzw. in einen andernnamen zu kopieren und diese dann zu benutzen.
Destry
Destry 11.03.2009 um 10:07:04 Uhr
Goto Top
Leider nein.

Die Dateinamen werden von den Nutzern vorgegeben. Die kann ich nicht selber anpassen.
Dann habe ich wohl Pech gehabt.
Aber danke dafür.

Gruss,
Destry
miniversum
miniversum 11.03.2009 um 12:23:27 Uhr
Goto Top
Werden diese Dateien den erzeugt? Kannst du also davon ausgehen das sie in einem Verzeichnis liegen und z.B. die einzigen sind (bzw.die einzigen mit der endung txt)? Dann könnte man das so dort rausfiltern.
Destry
Destry 11.03.2009 um 12:34:00 Uhr
Goto Top
Ich denke ich weiss worauf Du hinaus willst.
Ja, diese Dateien werden in einem ganz bestimmten Verzeichnis erzeugt und nein, sie sind nicht die einzigen. Es können dort beliebig viele liegen.

Wenn ich dem "Erzeuger-Programm" mein Programm automatisch folgen lasse, habe ich den Vorteil die erzeugten Dateien direkt nacheinander bearbeiten zu können.

Wenn ich das Verzeichnis auf erzeugte Dateien prüfe muss ich halt einen ganz anderen Ansatz verfolgen. Grundsätzlich würde das aber auch gehen.

Danke fürs Mitdenken.

Gruss,
Destry
miniversum
miniversum 11.03.2009 um 18:58:31 Uhr
Goto Top
Na du weist ja wie die erste Datei heißt (Erste_Datei.txt) und du kennst den anfang der zweiten datei. Die könntest du ja dann vielleicht so ermitteln:
FOR /F "tokens=1,2 delims=*" %%i in (echo %~1) do "set erste=%%i" & set "zweite=%%j"
FOR /F "delims=" %%i in ('dir /x /b %zweite%*.txt"') do set "zweite=%%i"
Ist halt nur ne ungetestete idee...
Destry
Destry 12.03.2009 um 00:12:03 Uhr
Goto Top
Leider weiß ich nicht wie Datei heißt. Der Name "Erste_Datei.txt" war nur ein Beispiel. Die Dateinamen samt Pfad bekomme ich in den Parametern übergeben. Wenn nun im Dateinamen ein "&" steht, wird der Rest rechts vom "&" verstümmelt. Damit fehlt mir dann der komplette Dateiname.

Naja, mal sehen. Mir fiel vorhin noch eine Möglichkeit ein für die ich Deinen Ansatz nutzen kann. Teste ich aber morgen.
Danke für die Vorschläge.

Gruss,
Destry