Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Per Batch String abfragen und abschließend in zwei Dateien alten String durch den eingegeben erstetzen

Frage Entwicklung Batch & Shell

Mitglied: JonWain

JonWain (Level 1) - Jetzt verbinden

02.06.2007, aktualisiert 04.06.2007, 10774 Aufrufe, 7 Kommentare

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
Mitglied: Biber
02.06.2007 um 17:20 Uhr
Moin JonWain,

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
Bitte warten ..
Mitglied: JonWain
03.06.2007 um 13:11 Uhr
Hallo Biber,

vielen Dank für Dein Nachricht. Es handelt sich um zwei Dateien im Textformat für Open-VPN (*.opvn) . Diese enthalten in Textform den Namen der einzubindenen Verschlüsselungsdateien:

---------Dateianfang------
...
cert Mitarbeiter.cert
key Mitarbeiter.key
.....
----------Dateiende--------

Dieses Mitarbeiter will ich einfach automatisiert ersetzen lassen durch eine Abfrage. Also Batch gestartet fragt nach dem Usernamen, ich gebe JonWain ein und das Batch schreibt in die Dateien

---------Dateianfang------
...
cert JonWain.cert
key JonWain.key
.....
----------Dateiende--------

Und fertig. Leider geht mein Anspruch und meine programmiertechnischen Fähigkeiten in der Wirklichkeit da total vorbei. Eventuell würde mir auch einfach eine Übersicht der möglichen Befehle einer Batchdatei mit Dokumentation helfen. So schwimme ich da doch deutlichst.

Schönen Restsonntag,
Jon
Bitte warten ..
Mitglied: miniversum
03.06.2007 um 16:11 Uhr
Wenn du in die Datei nicht Mitarbeiter sondern %username% schreibst gehts automatisch udn einfach.
Also deine Datei sieht so aus:
...
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

miniversum
Bitte warten ..
Mitglied: bastla
03.06.2007 um 16:23 Uhr
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
01.
@echo off & setlocal 
02.
set "OpVNDatei=D:\Datei.opvn" 
03.
:Eingabe 
04.
set /p MName=Bitte den Mitarbeiternamen eingeben_ 
05.
if "%MName%"=="" goto :Eingabe 
06.
type D:\Anfang.txt>"%OpVNDatei%" 
07.
echo cert %MName%.cert>>"%OpVNDatei%" 
08.
echo key %MName%.key>>"%OpVNDatei%" 
09.
type D:\Ende.txt>>"%OpVNDatei%" 
10.
type "%OpVNDatei%"|more
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]
Bitte warten ..
Mitglied: Biber
03.06.2007 um 16:33 Uhr
Moin JoinWain,

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..
01.
::----- snipp FragDenUserNachNamen.bat 
02.
@echo off & setlocal 
03.
:nochmal 
04.
cls 
05.
Echo.  
06.
Echo Eingabe des Benutzernamens 
07.
Echo.  
08.
Set /P "UsersNachname=Bitte den NACHnamen wie im Benutzerprofil hinterlegt eingeben [Beispiel: Wain]: " 
09.
Set /P "UsersVorname=Bitte den Vornamen wie im Benutzerprofil hinterlegt eingeben [Beispiel: Jon]: " 
10.
 
11.
Echo Sie haben eingegeben: %UsersVorname%.%UsersNachName%. 
12.
Set /P "AllesInButta=Sind diese Angaben korrekt [J/N] ? ---Geben Sie X für Abbruch ein.--" 
13.
If /i [%AllesInButta%]==[J]  goto :weiter 
14.
If /i [%AllesInButta%]==[X]  goto :eof 
15.
goto :nochmal 
16.
 
17.
:weiter 
18.
REM Hier kommen die Varianten 
19.
....
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:
01.
... 
02.
:weiter 
03.
Echo zeile1 von dieser Datei > %usersVorname%_%usersNachname%.opvn 
04.
Echo zeile2 von dieser Datei >> %usersVorname%_%usersNachname%.opvn 
05.
Echo zeileN von dieser Datei >> %usersVorname%_%usersNachname%.opvn 
06.
Echo cert %usersVorname%.%usersNachname%.cert >>%usersVorname%_%usersNachname%.opvn 
07.
Echo key %usersVorname%.%usersNachname%.key >>%usersVorname%_%usersNachname%.opvn 
08.
Echo RestzeileX von dieser Datei >> %usersVorname%_%usersNachname%.opvn 
09.
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...
01.
... 
02.
:weiter 
03.
Copy /y \\meinServer\opvnVorlagen\Part1.txt %usersVorname%_%usersNachname%.opvn 
04.
Echo cert %usersVorname%.%usersNachname%.cert >>%usersVorname%_%usersNachname%.opvn 
05.
Echo key %usersVorname%.%usersNachname%.key >>%usersVorname%_%usersNachname%.opvn 
06.
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]
Bitte warten ..
Mitglied: bastla
03.06.2007 um 16:55 Uhr
@Biber

Immerhin hast Du eine ordentliche Benutzeroberfläche (um die ich mich herumgedrückt hatte ) "ertrödelt" ...

Grüße
bastla
Bitte warten ..
Mitglied: JonWain
04.06.2007 um 14:48 Uhr
So, ich nochmal. Vielen Dank für Eure Lösungsvorschläge, habe für mich wieder eine Menge daraus gelernt.

Ich habe gerade mit dem ersten Schritt zum Lösungsansatz meine Probleme, doch lässt mich so eine Geschichte nicht ruhig schlafen, weil es doch irgendwie gehen muss! Die fertigen Codezeilen sehen dann doch immer recht einfach aus, doch bis einfach ist für mich ein langer Weg..

Bis die Tage & nochmals vielen Dank,
Jon
Bitte warten ..
Neuester Wissensbeitrag
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...