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-Key: 164658

Url: https://administrator.de/contentid/164658

Printed on: April 19, 2024 at 06:04 o'clock

Member: Skyemugen
Skyemugen Apr 15, 2011 at 08:56:59 (UTC)
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é
Mitglied: 99045
99045 Apr 15, 2011, updated at Oct 18, 2012 at 16:46:29 (UTC)
Goto Top
Moin,

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

Gruß
Member: Skyemugen
Skyemugen Apr 15, 2011 at 09:14:54 (UTC)
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é
Member: Dynarius
Dynarius Apr 15, 2011 at 09:57:02 (UTC)
Goto Top
Ich forste gerade weil er mir dir fertig.txt datei nicht schreibt =(
Member: Skyemugen
Skyemugen Apr 15, 2011 at 10:09:17 (UTC)
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é
Member: Dynarius
Dynarius Apr 15, 2011 at 10:13:32 (UTC)
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
Member: Skyemugen
Skyemugen Apr 15, 2011 at 10:17:23 (UTC)
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é
Member: bastla
bastla Apr 15, 2011 at 10:24:10 (UTC)
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
Member: Skyemugen
Skyemugen Apr 15, 2011 at 10:27:39 (UTC)
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é
Member: Dynarius
Dynarius Apr 15, 2011, updated at Oct 18, 2012 at 16:46:29 (UTC)
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)
Member: bastla
bastla Apr 15, 2011 at 10:47:29 (UTC)
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
Member: Dynarius
Dynarius Apr 15, 2011 at 10:51:12 (UTC)
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.
Member: bastla
bastla Apr 15, 2011, updated at Oct 18, 2012 at 16:46:29 (UTC)
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
Member: Dynarius
Dynarius Apr 15, 2011 at 11:00:54 (UTC)
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
Member: bastla
bastla Apr 15, 2011 at 11:02:07 (UTC)
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
Member: Skyemugen
Skyemugen Apr 15, 2011 at 11:19:44 (UTC)
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é
Member: Dynarius
Dynarius Apr 15, 2011 at 11:30:34 (UTC)
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