pbelcl
Goto Top

Prozent Variable mit Leerzeichen übergeben

Aufruf durch call trennt bei leerzeichen ab

Hi Leute,
Ich muß in diversen Batchroutinen automatisiert Emails versenden. Dazu habe ich gbmail.exe ausgewählt und eine bat geschrieben die sich email_send.bat nennt:

if %1!==! goto fehler
if %2!==! goto fehler
if %3!==! goto fehler

gbmail -to %1 -h smtp.sendserver.com -from %2@test.at -s - %3
goto end

:fehler
echo Sende_mail wurdemit falchen Parametern aufgerufen!
goto end

:end

Das Mail möchte ich dann aus vielen anderen Batchdateien verschicken die ca. so aussehen:

sende_mail ziel@adresse.at %~n0 "Text der angehängt werden soll"  

%1 soll die Zieladresse enthalten
%2 soll als Absender die aufgerufene Batch Datei sein und
%3 ein beliebiger Text

Funktioniert alles soweit gut, aber der Parameter %3 wird nicht komplett übergeben. Egal ob ich ihn in "" schreibe oder nicht, in meinem Beispiel oben kommt in der Variable %3 nur "Text" an!

Hat jemand einen Tip wie ich den gesamten Text in " in die %3 reinbekomme?

Content-ID: 74804

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

Ausgedruckt am: 26.11.2024 um 12:11 Uhr

Biber
Biber 30.11.2007 um 09:09:31 Uhr
Goto Top
Moin pbelcl,

kann ich weder optisch noch mit einem Test-Batch nachvollziehen.
::---%temp%\mailtest.bat
@echo off
if "%~1"=="" goto fehler  
if "%~2"=="" goto fehler  
if "%~3"=="" goto fehler  

echo gbmail -to 1[%1] -h smtp.sendserver.com -from 2[%2]@test.at -s -3[%3]
goto :eof

:fehler
echo %~n0 wurde mit falschen Parametern aufgerufen!

Ausgabe:
>%temp%\mailtest eins zwei "und das soll drei sein"  
gbmail -to 1[eins] -h smtp.sendserver.com -from 2[zwei]@test.at -s -3["und das soll drei sein"]  

(= 9:07:14  D:\temp=)
>%temp%\mailtest eins zwei
mailtest wurde mit falschen Parametern aufgerufen
Selbes Ergebnis, wenn ich "Call %temp%\mailtest ...." aufrufe.

Was machst Du anders?

Grüße
Biber
pbelcl
pbelcl 02.12.2007 um 17:38:48 Uhr
Goto Top
Ich hab jetzt mal die Batch Dateien vereinfacht, damit es etwas übersichtlicher wird:

Ich habe ein aufruf Batchfile wo nur eine Zeile drinnsteht:
sende_mail user@domaene.at %~n0 "Text der angehängt werden soll"  

und dann das "sende_mail.bat" batch


@echo off
if %1!==! goto end
if %2!==! goto end
if %3!==! goto end

gbmail -to %1 -h mailserver.at -from %2@domain.at -s "Bemerkung lautet - %3"  
goto end

:end

Tja, was mache ich anders....
Ehrlich gesagt keine Ahnung?
Ich weiß nur wenn ich in meinem Aufruf Batch
sende_mail user@domaene.at %~n0 "Text_der_angehängt_werden_soll"  
eingebe dann klappts, eh klar ...

Aber auch wenn ich in EINEM Batch (ohne CALL) mache:
gbmail -to user@domaene.at-h mailserver.at -from %~n0@domain.at -s "Bemerkung lautet - Text der angehängt werden soll"  
... klappt es OBWOHL am Ende Leerzeichen drin sind.
Und das verstehe ich nun nicht ...
Ist vielleicht so eine Geschichte mit den Anführungszeichen oder so?

Man kann das natürlich auch in einer Zeile abhandeln, ich wollte nur eine einheitliche "Mailsende Batch" für unterschiedliche Ziele haben. Ist aber nicht so wichtig ......