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, 468 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Exchange Server
"Senden als" funktioniert nur beim ersten mal (2)

Frage von N.Palm zum Thema Exchange Server ...

LAN, WAN, Wireless
Internetverbindung funktioniert erst nach ipconfig renew (6)

Frage von Joshh1 zum Thema LAN, WAN, Wireless ...

Windows Server
gelöst W2008 R2 msiinstaller funktioniert nicht mehr (5)

Frage von Alix zum Thema Windows Server ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...