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

Zeilenweises Auslesen einer Txt und Schreiben der einzelnen Zeilen in fortlaufende Variablen

Frage Entwicklung Batch & Shell

Mitglied: Indolenz

Indolenz (Level 1) - Jetzt verbinden

03.03.2010, aktualisiert 18.10.2012, 4904 Aufrufe, 4 Kommentare

Hallo ans Forum,

ich habe eine Frage zum zeilenweisen Auslesen einer Txt, die ich dann in der gleichen Batch-Datei, aus der der Befehl aufgerufen wird, wieder deklarieren will
- leider bekomme ich nur die letzte Zeile ausgegeben und ohne fortlaufende Nummerierung.

Ausgangspunkt:

Ich lese mit folgendem Befehl in der AD vorhandene OUs aus und schreibe sie in eine Datei

dsquery ou OU=111,OU=222,DC=333,DC=444,DC=com -o rdn -scope onelevel > ouresult.txt

Inhalt ouresult.txt=

"Ou1"
"Ou2"
"Ou3"
"Ou4"
...
"OuX"


Diese Txt versuche ich mit folgendem Batch-Befehl auszulesen:

for /f "usebackq delims=" %%i in ("Pfad:\ouresult.txt") do (for /L %%N IN (1 1 %%N) DO echo set %%N+1=)%%i > Ausgabe

Als Ergebnis bekommen ich aber nur die letzte Zeile der Ergebnis.txt:

set +=1 "OuX")

Nach Suche hier im Forum bin ich auf folgenden Befehl gestoßen, den ich aber nicht angepaßt bekomme:

for /f "usebackq delims=" %%i in (' findstr /n $ "Pfad:\ouresult.txt" ') do @(for /L %%a in (1,1,x) do @if %%i==%%a @echo %%j)

Mein angestrebtes Ergebnis sollte so aussehen, daß ich in der gleichen Batch-Datei, die über die Batch ausgelesenen
und in die ouresult.txt geschrieben Werte wieder einlese und als deklarierte Variablen verwenden kann:


Set 1="ou1"
Set 2="Ou2"
Set 3="Ou3"
...
Set X="OuX"

Bitte geben Sie die entsprechende Ziffer fuer die Ou ein:

Set /p account=


netdom join %computername% /Domain:123.com\adc.123.com /OU:OU=Workstations,OU=%account%,OU=111,OU=222,DC=333,DC=444,DC=com


Ich hoffe, ich konnte verständlich machen, was ich meine


Vielen Dank im Voraus für Eure Hilfe und Mühe
Gruß
Indolenz
Mitglied: Biber
03.03.2010 um 11:38 Uhr
Moin indolenz,

ohne deiner Frage ausweichen zu wollen - ich würde die Strategie geringfügig ändern.

Mit dem FindStr-/n-befehl oben hast du doch schon eine "durchnummerierte Liste aller OUs".

Brauchst du doch nicht nochmal clonen.
Beispiel am CMD-Prompt ("das führnde ">" gehört zu meinem Prompt, nicht mit eingeben):
>findstr /n . e:\schnipsel\OuResults.txt 
1:"Ou1" 
2:"Ou2" 
3:"Ou3" 
4:"Ou4" 
5:... 
6:"OuX" 
 
>REM nachdem u z.B. als %account% die "4" abgefragt hast: 
>for /f "delims=: tokens=1,*" %i in ('findstr /n . e:\schnipsel\OuResults.txt') do @If "%i"=="4" @echo %j 
"Ou4"
Da, wo jetzt in der Demo steht If "%i"=="4" wäre es entsprechend If "%i"=="%account%" im "richtigen" Ablauf.

Anm.:Im Batch jeweils %%i und %%j statt %i und %j am Cmd-Prompt.

Grüße
Biber
Bitte warten ..
Mitglied: Indolenz
03.03.2010 um 13:21 Uhr
Moin Biber,

vielen Dank für die schnelle Antwort.

Mir raucht gerade ein wenig der Kopf und ich glaube die Lösung ist ganz einfach, aber ich komm partout nicht drauf.


Ich möchte ja quasi das "echo %%j" , das in deinem Beispiel "4" sprich "Ou4" ist, gleich weiter deklarieren als Variable über:

for /f "delims=: tokens=1,*" %%i in ('findstr /n . %systemroot%\adresult.txt') do @If "%%i"=="%account%" @set %%j=client

Bekomme jedoch die Fehlermeldung: "Die Umgebungsvariable "Ou4" ist nicht definiert."

Kann ich nicht einfach das "@echo %j " weglassen und gleich weiter "set=" verwenden?

Und die dann gesetzte Variable %client% möchte ich in einem folgenden Befehl dann aufgreifen ...

Vielen Dank
Indolenz
Bitte warten ..
Mitglied: Indolenz
03.03.2010 um 14:07 Uhr
Problem gelöst ...

Übergabe des Echos als Variable mit:

for /f "delims=: tokens=1,*" %%i in ('findstr /n . %systemroot%\adresult.txt') do @If "%%i"=="%account%" (
echo %%j
set "client=%%j"
)

Vielen Dank noch mal ...
Bitte warten ..
Neuester Wissensbeitrag
Off Topic

"Ich habe nichts zu verbergen"

(2)

Erfahrungsbericht von FA-jka zum Thema Off Topic ...

Ähnliche Inhalte
PHP
gelöst TXT Datei auslesen und bestimmte Zeilen in Variable setzen (11)

Frage von 126594 zum Thema PHP ...

Batch & Shell
gelöst Einzelne Zeilen in txt Datei speichern und auslesen (7)

Frage von noah1400 zum Thema Batch & Shell ...

Batch & Shell
gelöst Zeilen in TXT mit Leerzeichen auf eine bestimmte Länge auffüllen (4)

Frage von stingray14k zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
CPU, RAM, Mainboards
Kaufberatung für mind. 8 verschiedene HighEnd-Mainboards (23)

Frage von yperiu zum Thema CPU, RAM, Mainboards ...

Mac OS X
Mac kann nicht im LAN pingen alle anderen schon (19)

Frage von smartino zum Thema Mac OS X ...

Hyper-V
Langsames Netzwerk i210 LAN Karte (10)

Frage von Akcent zum Thema Hyper-V ...

Netzwerke
Abisolierwerkzeug (9)

Frage von SarekHL zum Thema Netzwerke ...