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-Key: 110992

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

Printed on: April 20, 2024 at 02:04 o'clock

Member: miniversum
miniversum Mar 10, 2009 at 13:16:18 (UTC)
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.
Member: Destry
Destry Mar 10, 2009 at 13:25:09 (UTC)
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
Member: miniversum
miniversum Mar 10, 2009 at 17:16:00 (UTC)
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.
Member: Destry
Destry Mar 11, 2009 at 09:07:04 (UTC)
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
Member: miniversum
miniversum Mar 11, 2009 at 11:23:27 (UTC)
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.
Member: Destry
Destry Mar 11, 2009 at 11:34:00 (UTC)
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
Member: miniversum
miniversum Mar 11, 2009 at 17:58:31 (UTC)
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...
Member: Destry
Destry Mar 11, 2009 at 23:12:03 (UTC)
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