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

Ersetzen von Textteilen in einer .txt Datei

Frage Entwicklung Batch & Shell

Mitglied: forcerk

forcerk (Level 1) - Jetzt verbinden

08.02.2010 um 16:20 Uhr, 4437 Aufrufe, 6 Kommentare

Hallo erst mal. Ich versuche gerade mit Hilfe einer Batch Datei, Daten aus der AD für den User etwas schöner zu gestallten. Dabei bin ich auf folgendes Problem gestoßen.

Aus der AD werden Informationen in die Datei GroupInfo.txt geschrieben. Diese sieht so aus


Stand: 04.02.2010



GG-Servername-AG-ABC-123-R

"CN=username,OU=USERS,OU=Werk,OU=Land,OU=Firma,DC=Domain,DC=dom"
"CN=username,OU=USERS,OU=Werk,OU=Land,OU=Firma,DC=Domain,DC=dom"



GG-Servername-AG-ABC-C

"CN=username,OU=USERS,OU=Werk,OU=Land,OU=Firma,DC=Domain,DC=dom"
"CN=username,OU=USERS,OU=Werk,OU=Land,OU=Firma,DC=Domain,DC=dom"
"CN=username,OU=USERS,OU=Werk,OU=Land,OU=Firma,DC=Domain,DC=dom"




Die Zeilen welche mit <"CN=> beginnen sollten so editiert werden damit am Ende die Datei so aussehen soll.

#
Stand: 04.02.2010



GG-Servername-AG-ABC-123-R

Username: username Standort: Werk
Username: username Standort: Werk



GG-Servername-AG-ABC-C

Username: username Standort: Werk
Username: username Standort: Werk
Username: username Standort: Werk




Mein Ansatz war bis jetzt erst mal die unnötigen Informationen zu löschen. Das habe ich bis jetzt mit dieser Zeile auch hinbekommen:

01.
For /F "Tokens=1,3 delims=," %%i in (GroupInfo.txt) Do echo.%%i %%j >>GroupInfo_2.txt
Die neue Datei GroupInfo_2.txt sieht demnach so aus:

#
Stand: 04.02.2010


GG-Servername-AG-ABC-123-R
"CN=username OU=Werk
"CN=username OU=Werk




GG-Servername-AG-ABC-C
"CN=username OU=Werk
"CN=username OU=Werk
"CN=username OU=Werk





Was mir jetzt noch fehlt ist das der Text "CN= in Username: und der Text OU= in Standort: geändert wird.

Ich habe mir hierzu schon einige Beiträge hier im Forum angeschaut. Leider habe ich damit für mein Problem noch keine Lösung gefunden.
Idee war es das ich mit einer For-Schleife durch die Datei zu gehe. Als Trennzeichen (delims) wollte ich "=" nehmen. Wird dann die Zeichenfolge "CN gefunden soll diese in Username: geändert. Wird die Ziechenfolge OU gefunden wird diese in Standort: geändert.

Danke schonmal für die Hilfe
Mitglied: MisterExpulso
08.02.2010 um 16:40 Uhr
Wie wäre es hiermit:
!!!Vorher eine Sicherung erstellen!!!

01.
@echo off & setlocal 
02.
set "Datei=GroupInfo_2.txt" 
03.
 
04.
set R=%temp%\Replace2.vbs 
05.
>%R%  echo F=WScript.Arguments(0):Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile(F).ReadAll 
06.
>>%R% echo fso.CreateTextFile(F,True).Write Replace(Replace(T,"CN=","Username: "),"OU=","Standort: ")  
07.
 
08.
for %%f in ("%Datei%") do cscript //nologo %R% "%%f"
PS: Ich glaube das Script war von Biber, habe es für deine Zwecke abgeändert.
Bitte warten ..
Mitglied: forcerk
08.02.2010 um 17:21 Uhr
Danke DGzRSBorkum

Eine Lösung mittels vbs Script hatte ich auch schon probiert.
Da ich aber noch so gut wie nie mit vbs gearbeitet hatte bin ich nie auf die richtige Lösung gekommen.

Deine Lösung funktioniert wunderbar.
Dann schau ich mal das ich den Quellcode verstehe, man will ja auch etwas lernen und nicht nur abschreiben
Bitte warten ..
Mitglied: Biber
08.02.2010 um 17:23 Uhr
Moin forcerk,

willkommen im Forum.

Moin DGzRSBorkum natürlich auch.

Mit VBS geht es sicherlich schneller - aber andererseits....
Wenn du gerade mit Batch die ersten (zweiten, dritten) Schritte machst und auch nur das einsetzen willst, was du nachvollziehen und selbst warten kannst...
Dann geht es auch mit der oben skizzerten FOR/F-Anweisung.
Unter den Voraussetzungen, dass
  • du alle "relevanten Zeilen" erkennen kannst, z.B. weil sie mit "CN=" beginnen und
  • alle Zeilen den gleichen Aufbau haben (gleiche Anzahl Token in gleicher Reihenfolge)

Dann führe als weiteren Delimiter das Gleichheitszeichen ein und schreibe (Demo am CMD-Prompt; führendes ">" nicht mit eintiipen):
01.
>Set "FindCNZeile=CN=username,OU=USERS,OU=Werk,OU=Land,OU=Firma,DC=Domain,DC=dom" 
02.
 
03.
>for /f "delims==, tokens=2,6" %i in ("%FindCNZeile%") do @echo [Ausgabe] Benutzer: %i Standort: %j 
04.
[Ausgabe] Benutzer: username Standort: Werk
Ich denke, das ist für dich nachzuvollziehen und Grundlage für eigene Verfeinerungen.

Obwohl grundsätzlich VBSkript zum Suchen/Ersetzen natürlich besser geeignet ist.... eigentlich.
--> du solltest dann auf VBS gehen, wenn sich die Annahme der "immer gleich strukturierten CN-Zeilen" nicht bestätigt.

Grüße
Biber
Bitte warten ..
Mitglied: forcerk
08.02.2010 um 17:34 Uhr
Habe noch eine weitere Frage

Ist es möglich innerhalb des vbs Scripts die gesuchte Zeichenfolge als Variable auszudrücken?

Ziel ist es mit Hilfe des Usernamen, den Befehlen dsquery und dsget, den Usernamen in Vor- und Nachname aufzulösen und an die Zeile hinzufügen.
Bitte warten ..
Mitglied: TsukiSan
09.02.2010 um 03:35 Uhr
Hallo forcerk,

in VBS könnte es mit SPLIT und REPLACE so funktionieren.
Nur ein Beispiel anhand einer deiner Zeilen.
01.
MyText = "CN=username,OU=USERS,OU=Werk,OU=Land,OU=Firma,DC=Domain,DC=dom" 
02.
 
03.
MyText = Replace(MyText,",DC" , "") 
04.
MyText = Replace(MyText,",OU" , "") 
05.
 
06.
MyTextSep = Split(MyText, "=") 
07.
 
08.
for i = 0 to Ubound(MyTextSep) 
09.
	WScript.Echo MyTextSep(i) 
10.
next
Heißt, deine Ausgangsdatei zeilenweise einlesen und jede Zeile so in etwa bearbeiten.

Gruss
Tsuki
Bitte warten ..
Mitglied: forcerk
10.02.2010 um 16:29 Uhr
Danke nochmal für eure Hilfestellung.
Ich habe mich für eine Lösung per VBS entschieden.
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Webentwicklung
gelöst HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

Batch & Shell
Merkwürdige Zeilenformatierung in txt Datei (3)

Frage von miczar zum Thema Batch & Shell ...

Batch & Shell
gelöst In Batchdatei Variablen befüllen - mit Werten aus einer TXT-Datei (6)

Frage von donnyS73lb zum Thema Batch & Shell ...

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
Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (22)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

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 ...