Per Batch String abfragen und abschließend in zwei Dateien alten String durch den eingegeben erstetzen
Batch Datei fragt Benutzer nach auszuwechselnder Zeichenkette ab und ersetzt diese dann in zwei Dateien
Hallo zusammen,
irgendwie werde ich mit den Dos Befehlen nicht richtig grün.
Ich habe zwei Dateien, in welchen ich an zwei Stellen den Platzhalter Mitarbeiter eingefügt habe. Für jeden neuen Mitarbeiter muss ich diese Dateien anpassen, also jedes mal per Editor und suchen & ersetzen den String Mitarbeiter durch Vornamen.Nachnamen ersetzen.
Um mir das in Zukunft zu erparen, schwebt mir vor, eine Batch Datei zu erstellen, mit welcher die neuen Mitarbeiter selber diese beiden Dateien ändern können.
Damit die Mitarbeiter die Dateien selber anpassen können und dieses nicht über suchen & ersetzen im Editor tun sollen, möchte ich eine Batch Datei erstellen, welche den Namen des Mitarbeiters am Bildschirm abfragt und diesen Wert dann in den Dateien erstetzt. Soweit zur Theorie, aber in der Praxis bekomme ich das überhaupt nicht mehr hin. Ich hoffe, jemand von Euch ist noch deutlich stärker in der Dos Programmierung involviert und kann mich dieser leidigen Thematik erlösen.
Vielen Dank im Voraus für Eure Mühen,
Jon, alt werdend
Hallo zusammen,
irgendwie werde ich mit den Dos Befehlen nicht richtig grün.
Ich habe zwei Dateien, in welchen ich an zwei Stellen den Platzhalter Mitarbeiter eingefügt habe. Für jeden neuen Mitarbeiter muss ich diese Dateien anpassen, also jedes mal per Editor und suchen & ersetzen den String Mitarbeiter durch Vornamen.Nachnamen ersetzen.
Um mir das in Zukunft zu erparen, schwebt mir vor, eine Batch Datei zu erstellen, mit welcher die neuen Mitarbeiter selber diese beiden Dateien ändern können.
Damit die Mitarbeiter die Dateien selber anpassen können und dieses nicht über suchen & ersetzen im Editor tun sollen, möchte ich eine Batch Datei erstellen, welche den Namen des Mitarbeiters am Bildschirm abfragt und diesen Wert dann in den Dateien erstetzt. Soweit zur Theorie, aber in der Praxis bekomme ich das überhaupt nicht mehr hin. Ich hoffe, jemand von Euch ist noch deutlich stärker in der Dos Programmierung involviert und kann mich dieser leidigen Thematik erlösen.
Vielen Dank im Voraus für Eure Mühen,
Jon, alt werdend
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 60413
Url: https://administrator.de/forum/per-batch-string-abfragen-und-abschliessend-in-zwei-dateien-alten-string-durch-den-eingegeben-erstetzen-60413.html
Ausgedruckt am: 22.04.2025 um 09:04 Uhr
7 Kommentare
Neuester Kommentar
Moin JonWain,
nur zur Sicherheit:
Im ersten Fall können die Dateien eventuell einfacher (bzw. wartbarer) komplett von der Frag-nach-Username-Batchdatei geschrieben werden.
Im zweiten Fall wäre zu prüfen, ob nicht die Dateien 2 und 3 entweder mit Parameter aufgerufen werden konnen, ob es nicht reicht, in diesen Dateien einen Platzhalter %vorname% bzw. %nachname% zu verwenden oder ob es überhaupt mehrere Dateien geben muss.
Bitte etwas mehr Input... wie sehen denn die Dateien 2 & 3 aus?
Gruss
Biber
nur zur Sicherheit:
Ich habe zwei Dateien, in welchen ich an zwei Stellen den Platzhalter Mitarbeiter eingefügt habe.
Diese beiden Dateien sind- Textdateien wie zum Beispiel .Ini- oder .config-Dateien?
- oder gar ihrerseits wieder Batchdateien?
Im ersten Fall können die Dateien eventuell einfacher (bzw. wartbarer) komplett von der Frag-nach-Username-Batchdatei geschrieben werden.
Im zweiten Fall wäre zu prüfen, ob nicht die Dateien 2 und 3 entweder mit Parameter aufgerufen werden konnen, ob es nicht reicht, in diesen Dateien einen Platzhalter %vorname% bzw. %nachname% zu verwenden oder ob es überhaupt mehrere Dateien geben muss.
Bitte etwas mehr Input... wie sehen denn die Dateien 2 & 3 aus?
Gruss
Biber
Wenn du in die Datei nicht Mitarbeiter sondern %username% schreibst gehts automatisch udn einfach.
Also deine Datei sieht so aus:
Und die Batch die dann für jeden benutzer auf seinem Rechner die Neue Datei erstellt dann so:
miniversum
Also deine Datei sieht so aus:
...
cert %username%.cert
key %username%.key
cert %username%.cert
key %username%.key
Und die Batch die dann für jeden benutzer auf seinem Rechner die Neue Datei erstellt dann so:
@echo off
for /F "delims=" %%a in (Vorlage.opvn) do call:ausgabe "%%a"
goto:eof
:ausgabe
echo %~1>>%username%.opvn
goto:eof
for /F "delims=" %%a in (Vorlage.opvn) do call:ausgabe "%%a"
goto:eof
:ausgabe
echo %~1>>%username%.opvn
goto:eof
miniversum
Hallo JonWain!
Einfach Lösung: Alles von Dateianfang bis vor der "cert ..."-Zeile in eine Datei "Anfang.txt" (Zeilenschaltung am Ende der letzten Zeile nicht vergessen), alles nach der "key"-Zeile in eine "Ende.txt" schreiben, dann
und das gleiche Spiel für die zweite Datei.
Eine Überprüfung der Eingabe erfolgt nur im Hinblick darauf, ob sie nicht gänzlich leer ist.
Die letzte Zeile gibt den Inhalt der neu erstellten OpVNDatei zur Kontrolle auf dem Bildschirm aus und kann natürlich weggelassen werden.
Grüße
bastla
[Edit] Wenn, wie von miniversum angenommen, der in die Datei zu schreibende Mitarbeitername dem Anmeldenamen entspricht, kannst Du einfach die Eingabe weglassen und jeweils anstelle von %MName% %username% einsetzen. [/Edit]
Einfach Lösung: Alles von Dateianfang bis vor der "cert ..."-Zeile in eine Datei "Anfang.txt" (Zeilenschaltung am Ende der letzten Zeile nicht vergessen), alles nach der "key"-Zeile in eine "Ende.txt" schreiben, dann
@echo off & setlocal
set "OpVNDatei=D:\Datei.opvn"
:Eingabe
set /p MName=Bitte den Mitarbeiternamen eingeben_
if "%MName%"=="" goto :Eingabe
type D:\Anfang.txt>"%OpVNDatei%"
echo cert %MName%.cert>>"%OpVNDatei%"
echo key %MName%.key>>"%OpVNDatei%"
type D:\Ende.txt>>"%OpVNDatei%"
type "%OpVNDatei%"|more
Eine Überprüfung der Eingabe erfolgt nur im Hinblick darauf, ob sie nicht gänzlich leer ist.
Die letzte Zeile gibt den Inhalt der neu erstellten OpVNDatei zur Kontrolle auf dem Bildschirm aus und kann natürlich weggelassen werden.
Grüße
bastla
[Edit] Wenn, wie von miniversum angenommen, der in die Datei zu schreibende Mitarbeitername dem Anmeldenamen entspricht, kannst Du einfach die Eingabe weglassen und jeweils anstelle von %MName% %username% einsetzen. [/Edit]
Moin JoinWain,
So einem habe ich gerade geantwortet..*grmbbbl*
Back to Thread.
Wenn Der Sachverhalt so ist, gäbe es zwei Varianten, die ich empfehlen würde. Beide beginnen als Batch ungefähr so..
Bei den Varianten kommt es darauf an, ob "viele" Zeilen zu schreiben sind in diesen Open-VPN (*.opvn)-Dateien oder eher nur ein paar.
Wenn nur ein paar, dann nach der Sprungmarke ":weiter" weiter wie folgt:
Falls die Zeilenanzahl vor und nach den beiden variablen Zeilen zu gross ist, dann kannst Du auch den ersten und zweiten konstanten Teil jeweils in einer *.txt-Datei speichern und dann...
Soweit die ungetesteten Skizzen.
Zu den Befehlen SET und ECHO kannst Du am CMD-Prompt mit "Set /?" und "echo /?" nachlesen.
Oder hier ein bisschen im Bereich Batch & Shell stöbern.
Grüße
Biber
[Edit] @miniversum und @bastla
Hätte ich mir denken können, dass ich hier nicht so lange rumtrödeln sollte,,,
Schönen Sonntag!
[/Edit]
Eventuell würde mir auch einfach eine Übersicht der möglichen Befehle einer Batchdatei mit Dokumentation helfen.
Solche Fragesteller mag ich irgendwie viel lieber als die, die glauben, das hier wäre eine Art Flat-Premium-Hotline-Angebot.So einem habe ich gerade geantwortet..*grmbbbl*
Back to Thread.
Wenn Der Sachverhalt so ist, gäbe es zwei Varianten, die ich empfehlen würde. Beide beginnen als Batch ungefähr so..
::----- snipp FragDenUserNachNamen.bat
@echo off & setlocal
:nochmal
cls
Echo.
Echo Eingabe des Benutzernamens
Echo.
Set /P "UsersNachname=Bitte den NACHnamen wie im Benutzerprofil hinterlegt eingeben [Beispiel: Wain]: "
Set /P "UsersVorname=Bitte den Vornamen wie im Benutzerprofil hinterlegt eingeben [Beispiel: Jon]: "
Echo Sie haben eingegeben: %UsersVorname%.%UsersNachName%.
Set /P "AllesInButta=Sind diese Angaben korrekt [J/N] ? ---Geben Sie X für Abbruch ein.--"
If /i [%AllesInButta%]==[J] goto :weiter
If /i [%AllesInButta%]==[X] goto :eof
goto :nochmal
:weiter
REM Hier kommen die Varianten
....
Bei den Varianten kommt es darauf an, ob "viele" Zeilen zu schreiben sind in diesen Open-VPN (*.opvn)-Dateien oder eher nur ein paar.
Wenn nur ein paar, dann nach der Sprungmarke ":weiter" weiter wie folgt:
...
:weiter
Echo zeile1 von dieser Datei > %usersVorname%_%usersNachname%.opvn
Echo zeile2 von dieser Datei >> %usersVorname%_%usersNachname%.opvn
Echo zeileN von dieser Datei >> %usersVorname%_%usersNachname%.opvn
Echo cert %usersVorname%.%usersNachname%.cert >>%usersVorname%_%usersNachname%.opvn
Echo key %usersVorname%.%usersNachname%.key >>%usersVorname%_%usersNachname%.opvn
Echo RestzeileX von dieser Datei >> %usersVorname%_%usersNachname%.opvn
Echo RestzeileY von dieser Datei >> %usersVorname%_%usersNachname%.opvn
Falls die Zeilenanzahl vor und nach den beiden variablen Zeilen zu gross ist, dann kannst Du auch den ersten und zweiten konstanten Teil jeweils in einer *.txt-Datei speichern und dann...
...
:weiter
Copy /y \\meinServer\opvnVorlagen\Part1.txt %usersVorname%_%usersNachname%.opvn
Echo cert %usersVorname%.%usersNachname%.cert >>%usersVorname%_%usersNachname%.opvn
Echo key %usersVorname%.%usersNachname%.key >>%usersVorname%_%usersNachname%.opvn
Type \\meinServer\opvnVorlagen\Part2.txt >>%usersVorname%_%usersNachname%.opvn
Soweit die ungetesteten Skizzen.
Zu den Befehlen SET und ECHO kannst Du am CMD-Prompt mit "Set /?" und "echo /?" nachlesen.
Oder hier ein bisschen im Bereich Batch & Shell stöbern.
Grüße
Biber
[Edit] @miniversum und @bastla
Hätte ich mir denken können, dass ich hier nicht so lange rumtrödeln sollte,,,
Schönen Sonntag!
[/Edit]
@Biber
Immerhin hast Du eine ordentliche Benutzeroberfläche (um die ich mich herumgedrückt hatte
) "ertrödelt" ...
Grüße
bastla
Immerhin hast Du eine ordentliche Benutzeroberfläche (um die ich mich herumgedrückt hatte
Grüße
bastla