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 Der befehl else ist entweder falsch geschrieben oder konnte nicht gefunden werden!?

Mitglied: effeksys

effeksys (Level 1) - Jetzt verbinden

30.05.2011, aktualisiert 11:52 Uhr, 10292 Aufrufe, 10 Kommentare

Kann mir jemand sagen warum ich die Fehlermeldung:"Der befehl else ist entweder falsch geschrieben oder konnte nicht gefunden werden" erhalte.
Ich finde das Problem leider nicht.
01.
if "%computername:~5,1%" GEQ "0"if "%computername:~5,1%" LEQ "9" (  
02.
	echo Zahl erkannt >> c:\zahl.log 
03.
	set var=%computername:~2,4% 
04.
	goto nextStep ) 
05.
else ( 
06.
	echo keine Zahl erkannt >> c:\zahl.log 
07.
	set var=%COMPUTERNAME:~2,3% 
08.
	goto nextStep )
Vielen Dank im Voraus!
effeksys
Mitglied: Skyemugen
30.05.2011 um 12:03 Uhr
Aloha,

... tippe doch einmal IF /? in die Command ein und beachte den Part:
IF EXIST test.txt ( 
    del test.txt 
) ELSE ( 
    echo test.txt fehlt 
)
und vergleiche mal mit deiner Struktur

greetz André

P.S.: Zahlen als Text formatiert zu vergleichen scheint inzwischen modern zu sein ... LEQ "9" ... *grusel* das mag zwar funktionieren aber in einigen Situationen (wie in einem Thread vor kurzer Zeit) fällt man damit auf die Nase
Bitte warten ..
Mitglied: effeksys
30.05.2011 um 12:25 Uhr
Hi André.

Sofern ich das richtig verstehe müsste es doch so korrekt sein. Jedoch bekomme ich noch immer die Fehlermeldung.
01.
if "%computername:~5,1%" GEQ "0" if "%computername:~5,1%" LEQ "9" (  
02.
	echo Zahl erkannt >> c:\zahl.log 
03.
	set var=%computername:~2,4% 
04.
	goto nextStep  
05.
) else ( 
06.
	echo keine Zahl erkannt >> c:\zahl.log 
07.
	set var=%COMPUTERNAME:~2,3% 
08.
	goto nextStep  
09.
)
Bitte warten ..
Mitglied: effeksys
30.05.2011 um 12:37 Uhr
01.
if "%computername:~5,1%" GEQ "0" if "%computername:~5,1%" LEQ "9" (  
02.
	echo Zahl erkannt >> c:\zahl.log 
03.
	set var=%computername:~2,4% 
04.
	goto nextStep  
05.
) else ( 
06.
	echo keine Zahl erkannt >> c:\zahl.log 
07.
	set var=%COMPUTERNAME:~2,3% 
08.
	goto nextStep  
09.
)
Funktioniert. Ich hatte eine weitere else-Bedingung übersehen...
Bitte warten ..
Mitglied: Biber
30.05.2011 um 12:59 Uhr
Moin effeksys,

nein, funktioniert nicht.
Wenn die erste IF-Bedingung nicht erfüllt ist, dann geht die Logik weder über ein "SET var=whatever" noch zu einem der Goto's.

Lass Zeile 1 doch mal mit ' IF "X" GEQ "U" ...' anfangen und den Rest unverändert.

@Skyemugen

In diesem Fall war der "Ziffern-in-Anführungszeichen"-Vergleich beabsichtigt
if "%computername:~5,1%" GEQ "0" if "%computername:~5,1%" LEQ "9"
Denn wenn der PC-Name kürzer als 6 Zeichen ist ("PC123"), dann würde OHNE Anführungszeichen herauskommen:

if %computername:~5,1% GEQ 0 if %computername:~5,1% LEQ 9 echo 42 
:: ----> if  GEQ 0 if  LEQ 9 echo 42 -------->TILT
Grüße
Biber
Bitte warten ..
Mitglied: effeksys
30.05.2011 um 14:03 Uhr
@Biber
Vielen Dank für den Hinweis! An den else-Zweig der ersten if hatte nicht mehr gedacht (wegen der Einzeiler-Schreibweise)...

Mit IF "X" GEQ "U" fallen dann doch auch alle Treffer zwischen " " und "T" (Reihenfolge der ASCII-Codierung) raus, oder?
Hintergrund: Das Namensschema für die windows-clients ist "wsXXX...." oder wsXXXX...". Nach der 3. oder 4.Zahl kann irgendein Zeichen kommen.

Gibt wahrscheinlich einen besseren Weg, aber jetzt müsste es doch zumindest funktionieren. Oder?
01.
if "%computername:~5,1%" GEQ "0" ( 
02.
	if "%computername:~5,1%" LEQ "9" (  
03.
		echo 4.Zahl erkannt! >> c:\log.log 
04.
		set var=%computername:~2,4% 
05.
		goto nextStep  
06.
	) else (  
07.
		echo keine 4. zahl erkannt. >> c:\log.log 
08.
		set var=%COMPUTERNAME:~2,3% 
09.
		goto nextStep  
10.
11.
)else ( 
12.
	echo keine 4.Zahl erkannt. >> c:\log.log 
13.
	set var=%COMPUTERNAME:~2,3% 
14.
	goto nextStep  
15.
	)
Bitte warten ..
Mitglied: Biber
30.05.2011 um 21:00 Uhr
Moin effeksys,

ja, sorry, das "X für ein U"-Beispiel war genau verkehrt herum gewählt.
ich wollte natürlich eine offensichtlich unmöglich eintretende Bedingung als erste IF-Bedingung darstellen, also "wenn "X" gleich "U" wäre...
Bzw. im danebengegangenen Beispiel oben : IF "X" EQU "U" ....

Also jetzt zu deiner Frage, ob es so funktionieren würde....

Ja nee.... schon ..kann sein....vielleicht auch nicht.... wer weiss da schon bei 15 Zeilen und sechs bis acht Klammern.

Schau noch mal Abschied nehmend drauf auf dieses unwartbare Gestrunkele und dann mach einen leeren Editor auf.

Nur die Strategieüberlegung ist doch wichtig - den Positivfall "Es ist eine Ziffer" und nur diesen kannst du sauber SOFORT erkennen.
Dann sag doch
01.
  
02.
:: wenn ..[6. Zeichen ganz klar eine Ziffer]  
03.
....IF....GEQ "0".......IF ....LEQ .."9"  set  "dctemp=dc%computername:~2,4%" && goto allesBleibtGut  
04.
::: und hier hast du nur noch die Keine-Ziffer-Fälle, die nach deiner Logik allesamt bedeuten 3stellige Schulnummer. 
05.
:: ...kannst du also alle gleichermaßen SETzen 
06.
set "dctemp=dc%computername:~2,3%" 
07.
:: hier kommt gar keine weitere Codezeile...denn hier ist der Codeverlauf für alle gleich. 
08.
:allesBleibtGut 
Geht doch ganz ohne eine einzige Klammer UND lässt sich warten.

Grüße
Biber

[Edit] Tippfehler in Zeile 02 set dctemp="dc%computername:~2,4%" berichtigt - siehe unten. [/Edit]
Bitte warten ..
Mitglied: bastla
30.05.2011 um 21:09 Uhr
... und beweist, dass ein "goto" nicht immer zu verachten ist ...

Grüße
bastla
Bitte warten ..
Mitglied: effeksys
31.05.2011 um 18:00 Uhr
Nochmals herzlichen Dank!

Jetzt ist das Skript kurz und prägnant.
01.
@echo off 
02.
if "%computername:~5,1%" GEQ "0" if "%computername:~5,1%" LEQ "9" set var="%computername:~2,4%" && goto nextStep 
03.
set "var=%computername:~2,3%" 
04.
:nextStep 
05.
echo Variable ist:%var% >> c:\var.log
Bitte warten ..
Mitglied: Biber
31.05.2011 um 21:00 Uhr
Moin effeksys,

ich drück es mal positiv aus: an 40% deiner Skriptzeilen finde ich gar nichts rumzumäkeln...

Aber zu den restlichen drei Zeilen hätte ich Anmerkungen -- nämlich zu Zeile 01, 02 und 05..
01.
@echo off & setlocal 
02.
if "%computername:~5,1%" GEQ "0" if "%computername:~5,1%" LEQ "9" set "var=%computername:~2,4%" && goto nextStep 
03.
set "var=%computername:~2,3%" 
04.
:nextStep 
05.
echo Variable am %date% ist: [%var%] >> c:\var.log
Geändert habe ich:
01 -- Hier habe ich das "setlocal" ergänzt. Denn du setzt Variablen mit SET und die brauchst nur du bzw. dein Schnipsel. "SetLocal" sichert die Privatsphäre deiner Variablen. Einfach früh angewöhnen.
02 -- Hier war ein echter Fehler -- Das Anführungszeichen war an der falschen Stelle ([Edit] aus meiner Skizze übernommen. Mein Tippfehler [/Edit]) . Bitte vergleiche mit deiner Version oben.
05 -- Wenn du schon mit ">>" das Logfile immer fortführst, dann nützen dir die 127 Einträge in einem halben Jahr auch nur etwas, wenn du wenigstens das Datum jeder Zeile kennst.

P.S. Eine ganz ganz ganz schlechte Idee (aber nicht geändert von mir) ist es, eine Log-Datei nun ausgerechnet auf C:\ und ausgerechnet auf C:-Rootordner zu schreiben.
Auf 97% aller PCs hat dein Schnipsel da überhaupt keine Schreibrechte und brezelt weg. Und bei den restlichen 3% der der PCs werden die User bei dir fragen, warum du ihnen den Rootordner zumüllst.

Grüße
Biber
Bitte warten ..
Mitglied: effeksys
01.06.2011 um 14:09 Uhr
Hi Biber.

Wenn ich weiterhin von dir solch wertvolle Tipps bekommen umso näher komm ich als Batch-Neuling an die 100%.

zu 01 - gut zu wissen
zu 02 - den Fehler hatte ich in meinen Skript schon ausgemerzt, nachdem ich mich mich gewundert hatte das die Anführungszeichen mit in der Variable enthalten waren.
zu 05 - beim ausführen meines Skript lege ich zu Anfang die Logdatei immer neu an. Jedoch ist der Eintrag %date% trotzdem sinnvoll.

Bisher haben die normalen Benutzer keinen Zugriff auf C: und an den Rechten scheitert es auch nicht da ich es für ein Bootskript brauche. Aber trotzdem auch hier vielen Dank für deine Tipps!

Grüße,
effeksys
Bitte warten ..
Ähnliche Inhalte
Windows Netzwerk

OpenVPN vars.bat konnte nicht gefunden werden

gelöst Frage von DaveDaveWindows Netzwerk6 Kommentare

Juten Tach! Habe gerade OpenVPN installiert und wollte ganz normal vars.bat ausführen. Leider gibt mit die CMD nur ein ...

Windows 7

Ping und Telnet "Befehl nicht gefunden"

gelöst Frage von D1Ck3nWindows 77 Kommentare

Hallo zusammen, ich habe bei einem Nutzer das Problem, dass er weder Ping noch Telnet benutzen kann. Versucht er ...

Exchange Server

Standardofflineadressbuch in Exchange 2013 - Konnte nicht gefunden werden

gelöst Frage von m.reegerExchange Server

Hallo zusammen, ich stehe hier gerade vor einem merkwürdigem Problem. Ein Benutzerpostfach war "defekt" und wurde von uns deaktiviert ...

Exchange Server

Das Posfach für öffentliche Ordner konnte nicht gefunden werden - Exchange 2013

Frage von FlinxitExchange Server

hallo, habe im exchange 2013 unter Öffentliche Ordner mehrere Unterordner. 50 % der Ordner gehören zu einem Postfach für ...

Neue Wissensbeiträge
Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 6 StundenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Sicherheit

Intel gibt neue Spectre V2-Microcode-Updates frei (20.02.2018)

Information von kgborn vor 7 StundenSicherheit

Intel hat zum 20. Februar 2018 weitere Microcode-Updates für OEMs freigegeben, um Systeme mit neueren Prozessoren gegen die Spectre ...

Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 10 StundenMicrosoft3 Kommentare

Hallo zusammen, vor einigen Tagen lief in der ARD u.a. Reportage. Das Youtube Video dazu dürfte länger verfügbar sein. ...

Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 1 TagWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

Heiß diskutierte Inhalte
Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server40 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Router & Routing
ISC DHCP 2 Subnetze
gelöst Frage von janosch12Router & Routing19 Kommentare

Hallo, ich betreibe bei mir im Netzwerk einen ISC DHCP Server auf Debian, der DHCP verwaltet aktuell ein /24 ...

Switche und Hubs
Cisco SG350X-48 AdminIP in anderes VLAN
Frage von lcer00Switche und Hubs14 Kommentare

Hallo zusammen, ich habe ein Problem mir einem Cisco SG350X-48 bei der Erstinstallation wurde eine IP 192.168.0.254 (Default VLAN ...