dynarius
Goto Top

Nach einer individuell langen For-Schleife Script weiter ausführen

Hallo zusammen,

habt ihr ne Idee wie ich nach einer For-Schleife in Batch die immer unterschiedlich lang ist ein Script weiter ausführen kann ??

Ist vlt. ein bisschen dumm erklärt was mein problem jedoch ist, ist das eine for-schleife abläuft die eine .txt prüft welche jedoch immer individuell lang ist sprich immer mehr zeilen bekommt.
so nun möchte ich aber nach dem die For-Schleife die .txt Datei geprüft hat ein Script weiter laufen lassen. Das problem was ich habe ist das ich keinen counter laufen lassen kann da ich nie weiß wie lange die .txt datei ist.

Content-ID: 164658

Url: https://administrator.de/forum/nach-einer-individuell-langen-for-schleife-script-weiter-ausfuehren-164658.html

Ausgedruckt am: 23.12.2024 um 04:12 Uhr

Skyemugen
Skyemugen 15.04.2011 um 10:56:59 Uhr
Goto Top
Aloha,

1.) for-Schleife ... wir reden von ... Batch? Oder wovon?
2.) mal T-Mos Begriffe klau Ohne Ross und Reiter kommen wir nicht weiter, sprich: Du hast ein Skript, poste es doch mal, denn dein Geschriebsel ergibt für mich nur 72% Sinn und der Rest ist dunkel ...
3.) Der Beitrag gehört wohl eher in den Bereich Entwicklung und wenn 1.) zutrifft, dort in Batch & Shell

greetz André
99045
99045 15.04.2011, aktualisiert am 18.10.2012 um 18:46:29 Uhr
Goto Top
Moin,

da verweise ich doch glatt auf einen soeben von mir geschriebenen Beitrag in einem anderen Thread:
For f Schleife

Gruß
Skyemugen
Skyemugen 15.04.2011 um 11:14:54 Uhr
Goto Top
Aloha,

ausgehend von deinem Code im falschen Thread ...

@echo off & setlocal
set "Datei=C:\Export.txt"  
set "Log=C:\fertig.txt"  

csvde -d "OU=Users,OU=OU1,DC=Subdomäne,DC=Domäne,DC=de" -f "C:\Export.txt" -l "telephoneNumber,SamAccountName" -s Domänencontroller -t 389  

sleep 7

for /F "tokens=7,8 delims=," %%a in ("%Datei%") do call :start %%a %%b  
del "%Datei%"  
goto :eof && REM beendet den Hauptablauf

:start
set name=%5
set telefon=%4
echo %5;%4;1 >> "%Log%"  
goto :eof && REM beendet den Subablauf und springt zurück zu dem Punkt nach der Schleife

greetz André
Dynarius
Dynarius 15.04.2011 um 11:57:02 Uhr
Goto Top
Ich forste gerade weil er mir dir fertig.txt datei nicht schreibt =(
Skyemugen
Skyemugen 15.04.2011 um 12:09:17 Uhr
Goto Top
Aloha,

mich wundert ein wenig, dass du %%a und %%b übergibst aber im Prozess dann Parameter %5 und %4 verwendest ... müsste da nicht %2 (für %%b) und %1 (für %%a) stehen?

Wobei er nichtsdestotrotz die Datei zumindest anlegen sollte, sie müsste dann aber leer sein.

greetz André
Dynarius
Dynarius 15.04.2011 um 12:13:32 Uhr
Goto Top
Wieso %2 und %1 ?

an der Stelle gebe ich an welches Wort von dem Wert ausgelesen werden soll. Also das 5te Wort von dem Wert. Funktioniert soweit eig. auch. Nur die Schleife bekomme ich nicht los.

Ich merke auch das er den Call Befehl gar nicht mehr ausführt sondern nur noch die .txt Datei erstellt und sie dann wieder löscht. Eig. sollte er in dem Call Befehl jede Zeile von der Export.txt auslesen und neu in die fertig.txt schreiben.

LG
Skyemugen
Skyemugen 15.04.2011 um 12:17:23 Uhr
Goto Top
Aloha,

er führt also den call Befehl aus, sonst würde er keine .txt erstellen ...
mache doch mal echo on und schau, was er als %name% und %telefon% hat ... (wahrscheinlich gar nichts)

und am Besten gibst du uns auch ein echo %%a %%b, damit wir mal sehen, was du dort eigentlich stehen hast ... und welche Wörter du dort wie mit deinen Parametern auslesen willst, denn so glasklar ist mir das nicht

greetz André
bastla
bastla 15.04.2011 um 12:24:10 Uhr
Goto Top
Hallo Dynarius und Skyemugen!

%4 und %5 sind natürlich bei der Übergabe von nur 2 Parametern sinnfrei - aber das ist beim derzeitigen Stand der ganze Unterprogrammaufruf; wenn nur die entsprechenden Werte in "%Log%" gespeichert werden sollen, einfach:
for /F "usebackq tokens=7,8 delims=," %%a in ("%Datei%") do >>"%Log%" echo %%a;%%b;1
Hinsichtlich der Reihenfolge: Die Ausgabe der Eigenschaftswerte durch "csvde" erfolgt nicht in der Reihenfolge, die beim Aufruf angegeben wurde ...

Grüße
bastla
Skyemugen
Skyemugen 15.04.2011 um 12:27:39 Uhr
Goto Top
Aloha bastla!

sehe ich eigentlich auch so, darum wollte ich von ihm noch erfahren, was er dort mit seinen Parametern eigentlich erreichen wollte (ich würde mich nämlich nicht wundern, wenn %%a und %%b selbst nochmal Unterteilungen haben, die er eigentlich loggen wollte ... - so erschien es mir zumindest), bevor man das call ckillt ^_^

greetz André
Dynarius
Dynarius 15.04.2011, aktualisiert am 18.10.2012 um 18:46:29 Uhr
Goto Top
Sekunde ihr kennt die Vorgeschichte an der Stelle nicht, so einfach wie beschrieben geht es leider nicht. Das habe ich schon in einem anderen Thread gelöst:

Export aus AD mit LDIFDE oder CSVDE (Nur bestimmte Objekte)
bastla
bastla 15.04.2011 um 12:47:29 Uhr
Goto Top
Hallo Dynarius!

Die Frage von Skyemugen war ja zurecht, was Du dann weiter mit den Daten noch anstellen willst - und das geht aus der Vorgeschichte auch nicht hervor ...

BTW
Das habe ich schon in einem anderen Thread gelöst:
hätte ich dort gar nicht herausgelesen ...

Grüße
bastla
Dynarius
Dynarius 15.04.2011 um 12:51:12 Uhr
Goto Top
Doch hier habe ich es erklärt:

Ausgabe ---> "CN=Mustermann.Hans,OU=Users,OU=ersteOU,DC=Subdomain,DC=Domain,DC=de",+49 (89) 12345 6756,mustermannha"

eig. benötige ich nur: "6756,mustermannha"

Das funktioniert alles auch super, jedoch möchte ich wie gesagt nachdem die Schleife durch ist die Datei wieder löschen.
bastla
bastla 15.04.2011, aktualisiert am 18.10.2012 um 18:46:29 Uhr
Goto Top
Hallo Dynarius!
Doch hier habe ich es erklärt:
Die Frage war ja auch, was Du dann noch tun wolltest - anyhow:
jedoch möchte ich wie gesagt nachdem die Schleife durch ist die Datei wieder löschen.
Wie das geht, hat doch Skyemugen oben schon gezeigt ...

Grüße
bastla
Dynarius
Dynarius 15.04.2011 um 13:00:54 Uhr
Goto Top
Habs gelöst danke für eure Hilfe. Wenn ihr die Lösung wissen wollt dann poste ich es auf nachfrage.

Danke
LG
bastla
bastla 15.04.2011 um 13:02:07 Uhr
Goto Top
Hallo Dynarius!
Wenn ihr die Lösung wissen wollt dann poste ich es auf nachfrage.
Das nenne ich einmal eine gesunde Einstellung ...

Grüße
bastla
Skyemugen
Skyemugen 15.04.2011 um 13:19:44 Uhr
Goto Top
Aloha,

auch wenn ich bastlas Sarkasmus in diesem Punkt super finde ^_^

geht es hier um mehr als nur dich (als TE) oder uns (als Helfer) sondern um die Leute, die hier sonst noch so mit reinschnuppern, oft auf der Suche nach funktionierenden & passenden Lösungen.

Daher wäre das Posten deiner Endlösung mit parallelem Häkchensetzen (denn eine gelöst Aufgabe ergibt einen als gelöst markierten Thread) doch mehr als nur willkommen.

greetz André
Dynarius
Dynarius 15.04.2011 um 13:30:34 Uhr
Goto Top
ja ja sorry hier die lösung:

@echo off

If exist C:\fertig.txt then
del C:\fertig.txt
EndIf

csvde -d "OU=Users,OU=OU1,DC=Subdomäne,DC=Domäne,DC=de" -f "C:\Export.txt" -l "telephoneNumber,SamAccountName" -s Domänencontroller -t 389  

sleep 3

for /F "tokens=7,8 delims=," %%a in (C:\Export.txt) do call :start %%a %%b  
del C:\Export.txt

:start
echo %5;%4;1 >> C:\fertig.txt