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

Geschachtelte For Schleife funktioniert nur im ersten Durchlauf

Frage Entwicklung Batch & Shell

Mitglied: seb1212

seb1212 (Level 1) - Jetzt verbinden

24.02.2015, aktualisiert 25.02.2015, 493 Aufrufe, 1 Kommentar

Guten Morgen,

vielleicht kann mir einer von euch sagen warum mein Script nach dem ersten Durchlauf nicht mehr an den Anfang der ersten Schleife zurück springt.Nach dem erstem durchlauf springt das Script vom Ende der übergeordneten Schleife zum Anfang der zweiten For Schleife anstatt wieder an den Anfang der übergeordneten For Schleife.

Die Datei Berechtigung_P.txt sieht so aus:

%Userid%;%UserId_antragsteller%
%Userid%;%UserId_antragsteller%
%Userid%;%UserId_antragsteller%

Hier erstmal das Script:
(Servername wurden durch //Pfad ersetzt, die Echos Anfang 1 etc. sind zum Testen enthalten)

01.
  
02.
@Echo off 
03.
SETLOCAL ENABLEDELAYEDEXPANSION 
04.
 
05.
::Prüfen ob Benutzer zum berechtigen vorhanden sind 
06.
 
07.
if not exist \\Pfad\berechtigung_p.txt goto Ende 
08.
 
09.
for /f "tokens=*" %%m in ('powershell.exe -ExecutionPolicy ByPass -command Get-Date -format ddMMyyyy') do set "Datum=%%m" 
10.
 
11.
::Datei auslesen, Benutzer Vollzugriff geben, Benutzername in Datei mit Datum von Heute eintragen 
12.
  
13.
for /f "tokens=1,2 delims=;" %%i in (\\Pfad\berechtigung_p.txt) do ( 
14.
	echo anfang 1 
15.
	set "neuer_user=%%i" 
16.
	set "user=%%j" 
17.
	echo !user! 
18.
	rem echo %%i>>\\Pfad\\Berechtigungen\!Datum!.log 
19.
	rem echo %%i>>\\Pfad\\Berechtigungen\icacls.log 
20.
 
21.
		for /f "USEBACKQ skip=1" %%a in (`dsquery.exe user -name !User!^| dsget.exe user -email`) do (  
22.
			echo anfang 2 
23.
			set Email=%%a 
24.
			echo ende 2 
25.
			call :skip 
26.
27.
:skip 
28.
echo !email! 
29.
icacls d:\TEST /t /c /q /inheritance:e /grant !neuer_user!:(OI^)(CI^)(F^)>>d:\log.txt 
30.
	if "!errorlevel!" == "0" echo  \\Pfad\\admin\Laufwerk_P\Email_erfolgreich.bat !neuer_user! !email! 
31.
	if "!errorlevel!" GEQ "1" echo \\Pfad\\admin\Laufwerk_P\Email_fehler.bat !neuer_user! !email!					 
32.
33.
rem del \\Pfad\\hwinfo\berechtigung_p.txt 
34.
:Ende 
35.
ENDLOCAL
So und hier jetzt was dabei rauskommt

01.
  
02.
anfang 1 
03.
UserId 
04.
anfang 2 
05.
ende 2 
06.
email@adresse.de 
07.
 \\Pfad\admin\Laufwerk_P\Email_erfolgreich.bat UserId email@adresse.de 
08.
anfang 2 
09.
ende 2 
10.
dsget 
11.
 \\Pfad\admin\Laufwerk_P\Email_erfolgreich.bat UserId dsget 
12.
dsget 
13.
 \\Pfad\admin\Laufwerk_P\Email_erfolgreich.bat UserId dsget 
14.
anfang 1 
15.
UserId 
16.
anfang 2 
17.
ende 2 
18.
email@adresse.de 
19.
 \\Pfad\admin\Laufwerk_P\Email_erfolgreich.bat UserId email@adresse.de 
20.
anfang 2 
21.
ende 2 
22.
dsget 
23.
 \\Pfad\admin\Laufwerk_P\Email_erfolgreich.bat UserId dsget 
24.
dsget 
25.
 \\Pfad\admin\Laufwerk_P\Email_erfolgreich.bat UserId dsget 
26.
anfang 1 
27.
UserId 
28.
anfang 2 
29.
ende 2 
30.
email@adresse.de 
31.
 \\Pfad\admin\Laufwerk_P\Email_erfolgreich.bat UserId email@adresse.de 
32.
anfang 2 
33.
ende 2 
34.
dsget 
35.
 \\Pfad\admin\Laufwerk_P\Email_erfolgreich.bat UserId dsget 
36.
dsget 
37.
 \\Pfad\admin\Laufwerk_P\Email_erfolgreich.bat UserId dsget
Meine Frage jetzt, wo kommen nur Zeilen "\\Pfad\admin\Laufwerk_P\Email_erfolgreich.bat UserId dsget" her, eigentlich soll das Script nur diese Zeilen generien.
" \\Pfad\admin\Laufwerk_P\Email_erfolgreich.bat UserId email@adresse.de"

Vielen Dank


Mitglied: rubberman
LÖSUNG 24.02.2015, aktualisiert 25.02.2015
Hallo seb1212,

ohne jetzt näher zu verstehen, was dein Code tut ...
Ein Label innerhalb einer Schleife anzuspringen, funktioniert nicht. Das musst du komplett umstricken.
Pseudocode:
01.
@echo off 
02.
FOO ... 
03.
 
04.
for %%x in (...) do ( 
05.
  BLA ... 
06.
  for %%y in (...) do ( 
07.
    BLUB ... 
08.
    call :myLabel 
09.
10.
  call :myLabel 
11.
12.
rem Ende Hauptcode 
13.
exit /b 
14.
 
15.
 
16.
rem Subroutine 
17.
:myLabel 
18.
BAR ... 
19.
rem Ende Subroutine 
20.
exit /b
Grüße
rubberman
Bitte warten ..
Ähnliche Inhalte
Neue Wissensbeiträge
Administrator.de Feedback

Umgangsformen auf der Seite

(5)

Information von Frank zum Thema Administrator.de Feedback ...

Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(10)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Batch & Shell
Dir tc Befehl unter Windows 10 macht Probleme (12)

Frage von sugram zum Thema Batch & Shell ...

Windows Server
Windows Server 2016 RDS Remoteapp Anzeigefehler (11)

Frage von qlnGenius zum Thema Windows Server ...

Windows Server
Festplatten Ruhezustand Windows Server 2016 (10)

Frage von ahaeuser zum Thema Windows Server ...