Top-Themen

Aktuelle Themen (A bis Z)

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

Problem mit kombination aus IF ELSE und FOR Schleife.

Frage Entwicklung Batch & Shell

Mitglied: Uragus

Uragus (Level 1) - Jetzt verbinden

07.10.2014, aktualisiert 08.10.2014, 1555 Aufrufe, 12 Kommentare

Hallo,
An sich möchte ich ein Script schreiben was eine DFSR-Replikation prüfen soll.
Mit Batch Scripten habe ich leider keine Erfahrung…

Ich habe die eigentlichen Funktionen gegen ECHO’s ersetzt da nicht mal das Grundgerüst funktioniert…
Im CMD Fenster bekomme ich nur.
"(" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

01.
@echo off 
02.
 
03.
for %%f in (DC1,DC2) do for %%i in (DC1,DC2) do ( 
04.
	if not "%%f"=="%%i" ( 
05.
		echo Check BacklogFiles 
06.
		 
07.
		set /P backlogfiles= 
08.
		 
09.
			if not %backlogfiles%==0 ( 
10.
				echo %%f hat austehende Replikation mit dem %%i 
11.
				 
12.
				echo Check BacklogFiles 
13.
				set /P backlogfiles= 
14.
				 
15.
				echo %backlogfiles% - Problem behoben. 
16.
				 
17.
				if not %backlogfiles%==0 ( 
18.
					echo Replikation konnte nicht repariert werden. 
19.
				) else (echo Replikation lauft wieder.) 
20.
21.
22.
23.
	 
24.
exit /b
Mitglied: heilgecht
07.10.2014, aktualisiert um 11:53 Uhr
Hallo,

"set /P backlogfiles="
nach "=" muss normalerweise ein Argument folgen, oder verstehe ich was falsch?

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: Uragus
07.10.2014 um 12:20 Uhr
Der Wert wird dann in der CMD Konsole abgefragt.
Bitte warten ..
Mitglied: Nick.B
07.10.2014 um 14:23 Uhr
Wird das nicht immer nur mit einem Prozentzeichen geschrieben also "%f"


MfG
Bitte warten ..
Mitglied: Uragus
07.10.2014, aktualisiert um 14:55 Uhr
bei der Eingabe von "for /? " im CMD Fenster, kommt diese Erklärung.

Um den FOR-Befehl in einem Batchprogramm zu verwenden, geben Sie %%Variable
statt %Variable an.
Bitte warten ..
Mitglied: Nick.B
07.10.2014 um 15:01 Uhr
Hast Recht sehe es auch grad.

Müsste da dann nicht noch ein /F nach dem for drankommen.
Bitte warten ..
Mitglied: Uragus
07.10.2014 um 15:21 Uhr
schon möglich, mit /F geht es aber auch nicht weiter.
Bitte warten ..
Mitglied: Endoro
07.10.2014, aktualisiert um 19:46 Uhr
Hey, zum einen immer daran denken, cmd ist ein Interpreter. Zum anderen ist Batch nicht Javascript, da kannst du nicht einfach mal was hinschreiben
01.
:: lets go 
02.
@echo off &setlocal 
03.
 
04.
for %%f in (DC1,DC2) do for %%i in (DC1,DC2) do ( 
05.
	if not "%%f"=="%%i" ( 
06.
		echo Check BacklogFiles 
07.
		 
08.
		set /P backlogfiles= 
09.
		 
10.
		if not "%backlogfiles%"=="0" ( 
11.
			echo %%f hat austehende Replikation mit dem %%i 
12.
			 
13.
			echo Check BacklogFiles 
14.
			set /P backlogfiles= 
15.
			 
16.
			echo %backlogfiles% - Problem behoben. 
17.
			 
18.
			if not "%backlogfiles%"=="0" ( 
19.
				echo Replikation konnte nicht repariert werden. 
20.
			) else (  
21.
				echo Replikation lauft wieder. 
22.
23.
24.
25.
26.
	 
27.
exit /b
Gruss, Endoro
Bitte warten ..
Mitglied: bastla
07.10.2014 um 20:58 Uhr
@ Endoro
Dürfte ich ganz beiläufig noch das Stichwort "delayedExpansion" ins Spiel bringen?

Grüße
bastla
Bitte warten ..
Mitglied: Endoro
LÖSUNG 08.10.2014, aktualisiert um 16:35 Uhr
Zitat von bastla:
Dürfte ich ganz beiläufig noch das Stichwort "delayedExpansion" ins Spiel bringen?

Wie könnt ich das je vergessen
Ich hatte ja auf den Interpreter hingewiesen. Der interpretiert Zeile für Zeile. Wenn allerdings mehrere Programmzeilen mit einem Klammerpaar umschlossen werden, wie es bei Forschleifen oft passiert, wird der Code bei normaler Variablenerweiterung nur vor Eintritt in den geklammerten Codeblock interpretiert. Die einzigen Ausnahmen sind Laufzeitvariabe, weil den Microsoftpraktikanten Ende der 70'er aufgefallen ist, dass es sonst nicht funktioniert. Später haben sie dann erkannt, dass auch das noch unbefriedigend ist und haben die verzögerte Erweiterung erfunden, ohne die es heute nicht einmal mehr Liebhaber der Sprache gäbe. Die aber, wie wir es von Microsoft gewöhnt sind, dafür andere Probleme verursacht. Verzögert erweiterte Variable können innerhalb eines geklammerten Codeblocks "ausgelesen" werden, nachdem sich ihr Wert geändert hat. Ein kleines Beispiel:
01.
@echo off &setlocal enabledelayedexpansion 
02.
set "variable=A" 
03.
for %%a in (7) do ( 
04.
	set "variable=B" 
05.
	echo nicht verzögert erweitert: %variable% 
06.
	echo verzögert erweitert: !variable! 
07.
)
Alles klar? Gruss, Endoro
Bitte warten ..
Mitglied: Uragus
08.10.2014, aktualisiert um 08:57 Uhr
Zitat von Endoro:

Hey, zum einen immer daran denken, cmd ist ein Interpreter. Zum anderen ist Batch nicht Javascript, da kannst du nicht einfach mal
was hinschreiben
01.
> :: lets go 
02.
> @echo off &setlocal 
03.
>  
04.
> for %%f in (DC1,DC2) do for %%i in (DC1,DC2) do ( 
05.
> 	if not "%%f"=="%%i" ( 
06.
> 		echo Check BacklogFiles 
07.
> 		 
08.
> 		set /P backlogfiles= 
09.
> 		 
10.
> 		if not "%backlogfiles%"=="0" ( 
11.
> 			echo %%f hat austehende Replikation mit dem %%i 
12.
> 			 
13.
> 			echo Check BacklogFiles 
14.
> 			set /P backlogfiles= 
15.
> 			 
16.
> 			echo %backlogfiles% - Problem behoben. 
17.
> 			 
18.
> 			if not "%backlogfiles%"=="0" ( 
19.
> 				echo Replikation konnte nicht repariert werden. 
20.
> 			) else (  
21.
> 				echo Replikation lauft wieder. 
22.
> 			) 
23.
> 		) 
24.
> 	) 
25.
> ) 
26.
> 	 
27.
> exit /b 
28.
> 
Gruss, Endoro

Hallo, danke für die Hinweise,
leider funktioniert die IF ELSE Abfrage so nicht mehr…0 wird nicht erkannt.
Bitte warten ..
Mitglied: heilgecht
08.10.2014 um 10:26 Uhr
Hi,

ich denke mit VBS wärst du schon längst fertig.
Bitte warten ..
Mitglied: Endoro
08.10.2014 um 12:50 Uhr
Hey,
bitte lies dir meinen Beitrag durch.
Was meinst du, warum ich den mitternächtlich sonst geschrieben habe.
Gruss, Endoro
Bitte warten ..
Ähnliche Inhalte
Datenbanken
SQL - Problem mit Cursor und Schleife
Frage von BadFsaadKlDatenbanken

Hallo zusammen, ich habe ein Problem, eine SQL Abfrage funktionstüchtig zu bekommen. Entweder denke ich zu kompliziert, oder ich ...

Batch & Shell
Batch Problem bei einer For Schleife
gelöst Frage von Juergen42Batch & Shell2 Kommentare

Hallo Ich komme nicht dahinter ist sicher nur ein kleines Problem, aber es wird keine Ausgabe gemacht Eigentlch willich ...

Batch & Shell
Batch Zeitabfrage mit else Anweisung
gelöst Frage von dax4funBatch & Shell5 Kommentare

Wie in der Überschrift habe ein Batch ständig am rennen nur kann ich nicht die Zeit Bestimmen wann es ...

Batch & Shell
If Else mit Verschachtelung
gelöst Frage von soritoseBatch & Shell5 Kommentare

hallo ich versuche gerade eine suche zu schreiben mit einigen IF leider bekomme ich immer nur ein Syntaxfehler und ...

Neue Wissensbeiträge
Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 6 StundenLinux12 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 1 TagHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 2 TagenMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Heiß diskutierte Inhalte
Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Windows 10
Alle Programme mit bestimmtem Namen automatisch (per GPO) deinstallieren
gelöst Frage von lordofremixesWindows 1012 Kommentare

Hallo zusammen, gibt es eine Möglichkeit, alle Programme beginnend mit z.B. "Dell" im Namen per Script und somit per ...

Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux12 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...