echo & werkt niet als tekst..?

Status
Niet open voor verdere reacties.

Juzzz

Gebruiker
Lid geworden
15 jan 2008
Berichten
281
batch echo & werkt niet als tekst..?

Ik wil dat een batch bestand automatisch een .vbs aan maakt die mijn systeem instellingen verstuurd vie mail.

code:
Code:
@echo off
Echo set objmessage = createobject("cdo.message") >>stats%username%.vbs
echo. >>stats%username%.vbs
echo objmessage.from = "test@mail.nl" >>stats%username%.vbs
echo objmessage.to = "test@gmail.com" >>stats%username%.vbs
echo objmessage.subject = "Stats van %username%" >>stats%username%.vbs
echo objmessage.textbody = "stats: %username%"  >>stats%username%.vbs
echo. >>stats%username%.vbs
echo objmessage.configuration.fields.item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 >>stats%username%.vbs
echo objmessage.configuration.fields.item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.kpn-officedsl.nl" >>stats%username%.vbs
echo objmessage.configuration.fields.item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 >>stats%username%.vbs
echo objmessage.configuration.fields.update >>stats%username%.vbs
echo. >>stats%username%.vbs
echo objmessage.send >>stats%username%.vbs
pause

Het is on overzichtelijk als er veel stats achter elkaar staan, dus ik wil er een enter tussen.
de code voor enter in vbs is "& vbCrLf &". maar als ik dit invul:
Code:
echo objmessage.textbody = "stats:" & vbCrLf & "%username%"  >>stats%username%.vbs

dan geeft hij een error:
Code:
objmessage.textbody = "stats:"
vbCrLf wordt niet herkend als een interne
of externe opdracht, programma of batchbestand.
"user" wordt niet herkend als een interne
of externe opdracht, programma of batchbestand.
Druk op een toets om door te gaan. . .

ik heb ook al geprobeerd om met variabelen te werken:
Code:
ser enter=& vbCrLf &
echo %enter%

maar geen suc6

weet iemand een oplossing?
 
Laatst bewerkt:
:shocked: & :confused:

echo objmessage.textbody = "stats:" + vbCrLf + "%username%" >>stats%username%.vbs

of

echo objmessage.textbody = "stats:" + Chr (10) + "%username%" >>stats%username%.vbs

:thumb:
 
:shocked: & :confused:

echo objmessage.textbody = "stats:" + vbCrLf + "%username%" >>stats%username%.vbs

of

echo objmessage.textbody = "stats:" + Chr (10) + "%username%" >>stats%username%.vbs

:thumb:

Dus in andere woorden Enter in vbs is: vbCrLf of Chr (10) ?
het teken en kan gedaan worden door & en door + ?

dus dit zou bv moeten werken?

Code:
echo objmessage.textbody = "stats:" + vbCrLf +_ >>stats%username%.vbs
                                               "Username: %username%" + vbCrLf +_ >>stats%username%.vbs
                                               "dir: %windir%" + vbCrLf +_ >>stats%username%.vbs
                                               "programfiles: %programfiles%" + vbCrLf +_ >>stats%username%.vbs
 
De officiele vervanger van vbCrLf is chr(10)+chr(13)

vbCrLf staat voor "Carriage return Line Feed"
de chr(10) is alleen maar een line feed (dus ga naar de volgende regel)
de chr(13) is de carriage return.(ga naar het begin van de regel)

Is het mooiste uit te leggen met een typemachine. (zo'n ouwe :))
aan het eind van een regel haal je de hendel over waardoor het papier omhoog gaat (de linefeed) en daarna druk je de slede helemaal naar rechts door waardoor je ook weer aan het begin van de regel uit komt (de carriage return)
 
dus dit zou bv moeten werken?

Code:
echo objmessage.textbody = "stats:" + vbCrLf +_ >>stats%username%.vbs
                                               "Username: %username%" + vbCrLf +_ >>stats%username%.vbs
                                               "dir: %windir%" + vbCrLf +_ >>stats%username%.vbs
                                               "programfiles: %programfiles%" + vbCrLf +_ >>stats%username%.vbs

Niet echt :) maar zo ongeveer wel
Code:
echo wscript.echo   "stats:" + vbCrLf + >>stats%username%.vbs _
echo                "Username: %username%" + vbCrLf +_ >>stats%username%.vbs
echo                "dir: %windir%" + vbCrLf +_ >>stats%username%.vbs
echo                "programfiles: %programfiles%" >>stats%username%.vbs

heb wscript.echo gebruikt ipv objmessage.textbody om na het uitvoeren van de bat een gemakelijker werkend voorbeeld te krijgen als je de vbs klikt.
Kan je het resultaat meteen zien.
 
Laatst bewerkt:
Niet echt :) maar zo ongeveer wel
Code:
echo wscript.echo   "stats:" + vbCrLf + >>stats%username%.vbs _
echo                "Username: %username%" + vbCrLf +_ >>stats%username%.vbs
echo                "dir: %windir%" + vbCrLf +_ >>stats%username%.vbs
echo                "programfiles: %programfiles%" >>stats%username%.vbs

heb wscript.echo gebruikt ipv objmessage.textbody om na het uitvoeren van de bat een gemakelijker werkend voorbeeld te krijgen als je de vbs klikt.
Kan je het resultaat meteen zien.

thanks. alleen snap ik één ding nog niet van jou code.
de lijn:

echo wscript.echo "stats:" + vbCrLf + >>stats%username%.vbs _

waarom een _ op het eind en niet gewoon:

echo wscript.echo "stats:" + vbCrLf +_ >>stats%username%.vbs

wat dus ook werkt
 
Als je in de vbscript kijkt die door die bat wordt geschreven dan staat daar

Code:
 wscript.echo   "stats:" + vbCrLf +  _
               "Username: cursus" + vbCrLf +_ 
               "dir: C:\WINDOWS" + vbCrLf +_ 
               "programfiles: C:\Program Files"

dat kan ook zo
Code:
 wscript.echo   "stats:" + vbCrLf +  "Username: cursus" + vbCrLf + "dir: C:\WINDOWS" + vbCrLf + "programfiles: C:\Program Files"

Maar dan krijg je misschien bij veel schrijjf werk een hele lange onoverzichtelijke regel.
Die lange regel kan je opdelen in aparte kortere regels door _ scripthost zal dat negeren en het alsnog als één regel lezen. Alleen voor de schrijver/lezer is het gemakkelijker.
Vandaar :)
 
Als je in de vbscript kijkt die door die bat wordt geschreven dan staat daar

Code:
 wscript.echo   "stats:" + vbCrLf +  _
               "Username: cursus" + vbCrLf +_ 
               "dir: C:\WINDOWS" + vbCrLf +_ 
               "programfiles: C:\Program Files"

dat kan ook zo
Code:
 wscript.echo   "stats:" + vbCrLf +  "Username: cursus" + vbCrLf + "dir: C:\WINDOWS" + vbCrLf + "programfiles: C:\Program Files"

Maar dan krijg je misschien bij veel schrijjf werk een hele lange onoverzichtelijke regel.
Die lange regel kan je opdelen in aparte kortere regels door _ scripthost zal dat negeren en het alsnog als één regel lezen. Alleen voor de schrijver/lezer is het gemakkelijker.
Vandaar :)

het enige probleem nu nog is meerder regels. met bv Ipconfig.
dan krijg je als output meerder regels.
 
:D Nu snap ik je vorige vraag pas.. Dat was dus een schrijfvoutje van mij die toevallig ook werkt. Afijn.. Met de output van IP config kan je denk ik niets meer veranderen.

Wat je wel nog in mekaar zou kunnen friekelen is dat de IPconfig/all naar een apart bestand de output schrijft en dat je dit bestand als attachment toevoegt aan de mail via die vbs.

Allemaal moeilijk moeilijk gedoe om iets voor elkaar te krijgen maar wel leuk om te leren wat wel en niet kan.

De volgende stap zou zijn om alles in een keer met de vbs te doen.
http://www.microsoft.com/downloads/...64-ea15-4661-8da4-55bbc145c30e&displaylang=en

http://www.microsoft.com/downloads/...42-648b-4119-b7eb-783b0f7d1178&displaylang=en

Liefst nog PowerShell scripting want daar ligt de toekomst wat betreft Vista (Windows 7), Server2008 en Office2007..
Succes :thumb:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan