elhutti
Goto Top

Batch-Code in TXT auslagern

Hallo,

Ich möchte bei einem Batch-Mailprogramm, das man zum schreiben einer E-mail ändern muss, den Teil mit den Variablen in eine Textdatei auslagern. Also dass man nur die Textdatei bearbeiten muss.

Der Code:

set SMTP=
set SUBJECT=
set BODY=
set FROM=
set TO=

Hinter das = kommt immer das, was gefordert wird.

Unten kommt dann Powershell. Da wird das eingegebene verarbeitet.

Und eben diesen Code, der oben steht, soll in eine Textdatei kommen. Der Powershell Code soll das dann auslesen und verarbeiten, wie immer.

Wie kann ich das machen? Ich freue mich über Antworten! ;)

Content-Key: 389563

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

Ausgedruckt am: 19.03.2024 um 05:03 Uhr

Mitglied: 137443
137443 15.10.2018 aktualisiert um 22:04:26 Uhr
Goto Top
Pippifax

Textdatei
Var1=Data1
Var2=Data2
Var3=Data3

Powershell Code
# Als Hashtable einlesen
$data = gc 'c:\testdatei.txt' -raw | convertfrom-stringdata  
# Variablen verwenden
$data.var1
$data.var2
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
Mitglied: NetzwerkDude
NetzwerkDude 15.10.2018 um 21:59:40 Uhr
Goto Top
Schreib deinen Code in eine Textdatei, in der Form:
SMTP = "bla bla"
SUBJECT = "hallo"
usw.

Speichere die Datei unter z.B. Mailinput.txt

Nun nehmen wir z.B. den hier als Beispiel:
https://kevinmarquette.github.io/2016-11-06-powershell-hashtable-everyth ...

Und Schreiben nun direkt in Powershell:
$content = Get-Content -Path .\Mailinput.txt -Raw -ErrorAction Stop
$scriptBlock = [scriptblock]::Create( $content )
$scriptBlock.CheckRestrictedLanguage( $allowedCommands, $allowedVariables, $true )
$hashtable = ( & $scriptBlock ) 

Nun haben wir in der Variablen $hashtable alle Werte eingelesen, dank der Scriptblock Methode .CheckRestrictedLanguage sogar recht sicher (damit wird sichergestellt das da wirklich ein hashtable drinsteht, und kein fieser ausführbarer Code)

Weiter unten kannst du nun die Werte übergeben an dein Mailprogramm mit $hashtable.smtp usw.

MFG N-Dude
Mitglied: Kraemer
Kraemer 15.10.2018 um 22:16:57 Uhr
Goto Top
Zitat von @137443:

Pippifax
da bin ich noch bei dir

Textdatei
> Var1=Data1
> Var2=Data2
> Var3=Data3
> 

Powershell Code
> # Als Hashtable einlesen
> $data = gc 'c:\testdatei.txt' -raw | convertfrom-stringdata  
> # Variablen verwenden
> $data.var1
> $data.var2
> 
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
imho viel zu aufwändig. Dot-Sourcing: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ... und https://mcpmag.com/articles/2017/02/02/exploring-dot-sourcing-in-powersh ...
Mitglied: ElHutti
ElHutti 16.10.2018 um 07:25:03 Uhr
Goto Top
Hallo,

Viiiiiiiel zu aufwändig. Alle. Geht das nicht noch einfacher? Dieses Powershell Script ist in der Batch Datei. Ich bin kein Batchprofi ;) . Müsste ich den Code von der ersten Antwort einfach vor den Powershell Teil setzen?

MfG
Mitglied: 137443
137443 16.10.2018 aktualisiert um 08:39:09 Uhr
Goto Top
imho viel zu aufwändig. Dot-Sourcing
Braucht es nicht, er will ja nur Variablen auslagern, und da ist das vollkommen ausreichend.

Viiiiiiiel zu aufwändig. Alle. Geht das nicht noch einfacher? Dieses Powershell Script ist in der Batch Datei. Ich bin kein Batchprofi ;) . Müsste ich den Code von der ersten Antwort einfach vor den Powershell Teil setzen?
Blödsinn. Du sprichst in Rätseln, da kann man nur raten ... PS Code in Batch
@echo off
Powershell -Executionpolicy Bypass -NoProfile -Command "$data = gc 'c:\testdatei.txt' -raw | convertfrom-stringdata; $data.var1"  
Warum du das mixen willst bleibt dein Geheimnis.
Mitglied: Kraemer
Kraemer 16.10.2018 um 08:55:20 Uhr
Goto Top
Zitat von @137443:

imho viel zu aufwändig. Dot-Sourcing
Braucht es nicht, er will ja nur Variablen auslagern,
und genau dafür sind die Dinger u.a. da
Mitglied: Kraemer
Kraemer 16.10.2018 aktualisiert um 08:57:09 Uhr
Goto Top
Zitat von @ElHutti:

Hallo,

Viiiiiiiel zu aufwändig. Alle. Geht das nicht noch einfacher?
Ich habe dir die einfachste Lösung aufgezeigt!

Dieses Powershell Script ist in der Batch Datei. Ich bin kein Batchprofi ;) . Müsste ich den Code von der ersten Antwort einfach vor den Powershell Teil setzen?
Es ist unmöglich Ahnungslosen Hilfestellung zu geben, wenn die noch nicht einmal eine ordentliche Frage formuliert bekommen!
Mitglied: miniversum
miniversum 16.10.2018 um 09:58:58 Uhr
Goto Top
Hallo,

Batch mail programm in PS aufrufen das von einer Batch aufgerufen wird? Dann lass doch das PS Gedöns gleich ganz weg?
Ich bin da leicht verwisst. Aber klar in Batch firekt machst du das so:
FOR /F "delims=" %%i in (Datei.txt) do %%i
Wobei du das "set" auch aus der txt Datei raus und in die Batch reinverlagern kannst. Dann sieht es in der txt schöner aus.

Gruß
...
Mitglied: 137443
137443 16.10.2018 aktualisiert um 10:42:01 Uhr
Goto Top
Zitat von @Kraemer:
Ich habe dir die einfachste Lösung aufgezeigt!
Das soll einfacher sein?? Dot Sourcing ist zusätzlich für die Interpretation von Codebestandteilen die er hier überhaupt nicht braucht . ConvertFrom-String Data wandelt nur die Name Wert Paare zu einer Hashtable um und das ist alles was er braucht, also simpel hoch drei.

Aber was der weitere Sinn von PS in der Batch sein soll verrät er ja nicht.
Mitglied: NetzwerkDude
NetzwerkDude 16.10.2018 um 10:53:39 Uhr
Goto Top
vermutlich das:
https://xkcd.com/1988/