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

Der befehl else ist entweder falsch geschrieben oder konnte nicht gefunden werden!?

Frage Entwicklung Batch & Shell

Mitglied: effeksys

effeksys (Level 1) - Jetzt verbinden

30.05.2011, aktualisiert 11:52 Uhr, 9246 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows 7
gelöst Ping und Telnet "Befehl nicht gefunden" (7)

Frage von D1Ck3n zum Thema Windows 7 ...

Windows Server
IP-Einstellungen werden falsch angezeigt (5)

Frage von schlumpf90 zum Thema Windows Server ...

Netzwerkgrundlagen
gelöst Subnetting Musterlösung falsch!? (5)

Frage von pokerfacejb zum Thema Netzwerkgrundlagen ...

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

Frage von Xaero1982 zum Thema Microsoft ...

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 ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...