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

Warum wird die for schleife nur einmal durchlaufen?

Frage Entwicklung Batch & Shell

Mitglied: bjoern.schrammen

bjoern.schrammen (Level 1) - Jetzt verbinden

27.01.2011 um 13:05 Uhr, 4337 Aufrufe, 9 Kommentare

Hallo,

ich habe ein kleines Problem. Und zwar wird die for schleife nur einmal durchlaufen, obwohl in server.txt mehr als ein Server genannt wird.
Auf dem ersten Server funktioniert auch alles aber die anderen werden nicht angerührt.
Woran kann dies liegen? Kann ich dies anders lösen?

Für Antworten wäre ich sehr dankbar!

for /f %%o in (c:\server.txt) do (
set server=%%o
wmic /node: "%%o" PATH win32_operatingsystem GET caption /format:list > c:\Winversion.txt
find "Microsoft Windows Server 2008 R2" c:\Winversion.txt
if ERRORLEVEl 1 (GOTO W2K3) Else (GOTO W2K8)
:W2K3
mkdir \\%server%\c$\test\32
if exist "\\%server%\c$\test\32\." (
echo %server% Verzeichniss erstellt! >> c:\Windows\Temp\opc_inst.log
) ELSE (
echo %server% Error! Verzeichniss nicht erstellt! >> C:\Windows\Temp\opc_inst.log
)
GOTO END
:W2K8
mkdir \\%server%\c$\test\64
if exist "\\%server%\c$\test\64\." (
echo %server% Verzeichniss erstellt! >> c:\Windows\Temp\opc_inst.log
) ELSE (
echo %server% Error! Verzeichniss nicht erstellt! >> C:\Windows\Temp\opc_inst.log
)
GOTO END
:END
del c:\Winversion.txt
)
Mitglied: bastla
27.01.2011 um 13:35 Uhr
Hallo bjoern.schrammen und willkommen im Forum!

Ich würde das (ungetestet) eher so anlegen:
01.
@echo off & setlocal 
02.
for /f %%o in (c:\server.txt) do ( 
03.
    wmic /node: "%%o" PATH win32_operatingsystem GET caption /format:list | find "Microsoft Windows Server 2008 R2">nul && call :MDir "%%o" 64 || call :MDir "%%o" 32 
04.
05.
goto :eof 
06.
	 
07.
:MDir 
08.
md "\\%~1\c$\test\%2" 
09.
if exist "\\%~1\c$\test\%2\" ( 
10.
    echo %~1 Verzeichnis erstellt! 
11.
) else ( 
12.
    echo %~1 Error! Verzeichnis nicht erstellt! 
13.
)>>c:\Windows\Temp\opc_inst.log 
14.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: BigWim
27.01.2011 um 13:36 Uhr
Hallo Björn,

versuche es mal so. Ich kann's nicht testen.

Meine Vermutung: Das Setzen von Umgebungsvariablen in For-Schleifen ist (für mich) eine Welt für sich. Hilfe findest Du sicherlich hier, aber auch in den anderen Tutorials.

Markus

Edit: wieder mal so langsam und ideelos ...


01.
for /f %%o in (c:\server.txt) do call :MachWat %%o 
02.
goto :eof 
03.
 
04.
:MachWat 
05.
REM set server=%%o  so wird das natürlich nix. Dank an Bastla 
06.
set server=%1 
07.
wmic /node: "%Server%" PATH win32_operatingsystem GET caption /format:list > c:\Winversion.txt 
08.
find "Microsoft Windows Server 2008 R2" c:\Winversion.txt 
09.
if ERRORLEVEl 1 (GOTO W2K3) Else (GOTO W2K8) 
10.
 
11.
:W2K3 
12.
mkdir \\%server%\c$\test\32 
13.
if exist "\\%server%\c$\test\32\." ( 
14.
  echo %server% Verzeichniss erstellt! >> c:\Windows\Temp\opc_inst.log  
15.
) ELSE ( 
16.
  echo %server% Error! Verzeichniss nicht erstellt! >> C:\Windows\Temp\opc_inst.log 
17.
)  
18.
GOTO END 
19.
 
20.
:W2K8 
21.
mkdir \\%server%\c$\test\64 
22.
if exist "\\%server%\c$\test\64\." ( 
23.
  echo %server% Verzeichniss erstellt! >> c:\Windows\Temp\opc_inst.log  
24.
) ELSE ( 
25.
  echo %server% Error! Verzeichniss nicht erstellt! >> C:\Windows\Temp\opc_inst.log 
26.
)  
27.
GOTO END 
28.
 
29.
:END 
30.
del c:\Winversion.txt
Bitte warten ..
Mitglied: bastla
27.01.2011 um 13:39 Uhr
@BigWim

Im Unterprogramm ist die Schleifenvariable %%o nicht verfügbar - Du kannst sie nur entweder als Parameter übergeben (siehe meinen Ansatz oben) oder bereits vorweg der Variablen %server% zuweisen, also etwa:
01.
for /f %%o in (c:\server.txt) do set "server=%%o" & call :MachWat
Auf jeden Fall musst Du dann natürlich auch in der "wmic"-Zeile anstelle von %%o eine der beiden anderen Variablen (%1 oder %server%) verwenden ...

Grüße
bastla
Bitte warten ..
Mitglied: BigWim
27.01.2011 um 13:43 Uhr
@bastla

Ach Mist. Das habe ich natürlich übersehen.

Richtig, es muß heißen

01.
for /f %%o in (c:\server.txt) do call :MachWat %%o 
02.
goto :eof 
03.
 
04.
:MachWat 
05.
set server=%1
Das habe ich mir so angewöhnt, weil ich das mit der richtigen Schreibweise (!Server!) in FOR-Schleifen zu oft falsch mache.
Ich werde das im Posting sofort richtig stellen.

Danke, dass Du immer auf mich aufpaßt

Markus
Bitte warten ..
Mitglied: bastla
27.01.2011 um 13:44 Uhr
@BigWim
Danke, dass Du immer auf mich aufpaßt
Aber gerne (und denk auch noch an die Zeile 7) ...

Grüße
bastla
Bitte warten ..
Mitglied: BigWim
27.01.2011 um 13:46 Uhr
@bastla

Gerade bemerkt und doch zu spät. Schon korrigiert.

Markus

Edit: ohne Worte, außer 1000 Dank!
Bitte warten ..
Mitglied: bjoern.schrammen
27.01.2011 um 14:04 Uhr
Hallo,

vielen dank!!!

Das Script von BigWim funktioniert einwandfrei.

Ich danke vielmals!

MFG
Bitte warten ..
Mitglied: BigWim
27.01.2011 um 14:08 Uhr
Das Script von BigWim
Naja. Sagen wir 50:50

Viel Erfolg
Markus
Bitte warten ..
Mitglied: bjoern.schrammen
27.01.2011 um 14:10 Uhr
Oh na klar ich wollte bastia nicht im Schatten stehen lassen.
Natürlich auch ihm vielen dank für seine Hilfe!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Geschachtelte For Schleife funktioniert nur im ersten Durchlauf
gelöst Frage von seb1212Batch & Shell1 Kommentar

Guten Morgen, vielleicht kann mir einer von euch sagen warum mein Script nach dem ersten Durchlauf nicht mehr an ...

JavaScript
PHP Datei im Hintergrund durchlaufen
Frage von miichiii9JavaScript2 Kommentare

Hallo Miteinander Ich möchte gerne eine Aktualisierungsfunktion auf meiner Seite erstellen. Die aktuelle Seite im Browser ist "index.php" wenn ...

Batch & Shell
Schleife für zu beendende Dienste erstellen - Code bereits vorhanden - Variablen (Dienstnamen) aus txt auslesen und in schleife durchlaufen
gelöst Frage von hewasloseyBatch & Shell11 Kommentare

Hallo zusammen, ich bin gerade dabei mich etwas weiter in Batch zu vertiefen Nur wie bekomme ich folgenden Code ...

Batch & Shell
Batch Schleife als FOR-SCHLEIFE
gelöst Frage von mp2711Batch & Shell2 Kommentare

Mit den FOR-Schleifen habe ich mich leider bislang zu selten auseinander gesetzt, aber da ich sonst gerade nicht weiter ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 15 StundenApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 20 StundenWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 20 StundenWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Windows XP
Windows XP Aktivieren geht nicht
Frage von tetikmiroWindows XP13 Kommentare

Hallo Ich habe einen Windows XP mit einen vCenter Converter umgezogen auf eine ESXI. Soweit funktioniert dies auch ohne ...

Blogs
Immer wiederkehrende PHP Fehlermeldung bei Wordpress UTF-8 - ASCII
gelöst Frage von vcdweltBlogs11 Kommentare

Hi, seit einiger Zeit wird mein error_log meines Wordpress Blogs mit immer der gleichen Fehlermeldung überschwemmt. 14-Dec-2017 08:18:05 UTC ...

Switche und Hubs
Redundante L2 LWL Leitung über 2 Standorte - Spanning Tree - HP Equipment
gelöst Frage von ResolvSwitche und Hubs10 Kommentare

Hallo, ich stehe vor der Herausforderung eine Redundante L2 LWL Leitung über 2 Standorte herzustellen. Grundsätzliches Switching Know How ...