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:
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! ;)
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! ;)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 389563
Url: https://administrator.de/forum/batch-code-in-txt-auslagern-389563.html
Ausgedruckt am: 19.03.2025 um 13:03 Uhr
10 Kommentare
Neuester Kommentar

Pippifax
Textdatei
Powershell Code
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
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
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:
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
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
Zitat von @137443:
Pippifax
da bin ich noch bei dirPippifax
Textdatei
Powershell Code
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 ...> 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
>

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"
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!
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:
Gruß
...
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ß
...

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.
Aber was der weitere Sinn von PS in der Batch sein soll verrät er ja nicht.
vermutlich das:
https://xkcd.com/1988/
https://xkcd.com/1988/