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

Syntaxfehler bei Befehl ohne Parameter

Frage Entwicklung Batch & Shell

Mitglied: kkboy94

kkboy94 (Level 1) - Jetzt verbinden

05.08.2010, aktualisiert 18.10.2012, 4481 Aufrufe, 16 Kommentare

Hallo Leute,


Das Problem tritt in Verbindung mit einer meiner anderen Fragen auf, bzw. mit dem jeweiligen Registry-Pfad

Mein Problem ist folgendes:

Ich habe in meiner Batch den Befehl
REG QUERY "HKCR\lnkfile\shell\ueber"
Wenn ich diesen Befehl norrmal am CMD-Prompt teste, erscheint kein Fehler.
Erst wenn ich den Befehl in die Batch packe, erscheint die Fehlermeldung "Syntaxfehler".
Aber wie kann ich einen Syntaxfehler bekommen, wenn ich gar keine Parameter benutze?



Ich hoffe ihr könnt mir helfen.

Danke schonmal im Voraus für alle Lösungsvorschläge/-anregungen

MfG Karsten
Mitglied: 60730
05.08.2010 um 13:55 Uhr
Moin,
Erst wenn ich den Befehl in die Batch packe, erscheint die Fehlermeldung "Syntaxfehler".
Aber wie kann ich einen Syntaxfehler bekommen, wenn ich gar keine Parameter benutze?

[OT]
  • xcopy ohne parameter liefert auch einen Syntaxfehler, obwohlweil keine Parameter genommen wurden.
[/OT]
steht da wirklich "ueber" oder über?

... denn das wäre ein Grund für einen Fehler.

Gruß
Bitte warten ..
Mitglied: kkboy94
05.08.2010, aktualisiert 18.10.2012
Danke für den Vorschlag,

Um genau zu sein, ich meine mit eine "meiner anderen Fragen" konkret diese hier:
http://www.administrator.de/forum/kontextmen%c3%bc-eintrag-f%c3%bcr-ver ...
Ich habe aber trotzdem mal alle Einträge so geändert, dass ich anstatt des "ueber" wirklich überall "über" genommen habe (Natürlich mit den entsprechenden Variablen, wegen dem bekannten Problem den Umlauten in DOS, also %ue%=ä,%ae%=ä,usw.... Kennst du sicher auch)
Zusätzlich habe ich mal den Parameter "/S" dazu genommen, aber leider auch ohne Erfolg, bzw. das gleiche Ergebnis.


Gruß zurück
Bitte warten ..
Mitglied: it-frosch
05.08.2010 um 16:03 Uhr
Hallo Karsten,

wäre es möglich das du in der Batch am Ende des Befehls dem PROMT vergessenhast?

Ich habe in einer Batch folgendes getestet:

1 REG query "HKCR\Software\Microsoft\Windows"
2
3 pause
4 REG query "HKCR\Software\Microsoft\Windows">c:\test.log
5
6pause


Funktioniert. Zuerst wird der Schlüssel angezeigt und anschließend in die Datei test.log geschreiben.

Grüße vom IT-Frosch
Bitte warten ..
Mitglied: kkboy94
05.08.2010 um 17:10 Uhr
Hmm, ich weiß zwar nicht ganz, was du mit "PROMT" meinst, aber das was du in der Batch hast funktioniert bei mir auch, wenn ich es in eine seperate batch-Datei tue.
In Meiner Batch ist es aber auch so, dass jeder beliebige Registry-Pfad den gleichen Fehler (Syntaxfehler) ausgibt. Also gebe ich hier mal meine Batch frei, weil ich den Fehler einfach nicht finde:
01.
chcp 1252>nul 
02.
set ue=ü 
03.
set ae=ä 
04.
set oe=ö 
05.
set Uue=Ü 
06.
set Aae=Ä 
07.
set Ooe=Ö 
08.
set ss=ß 
09.
chcp 850>nul 
10.
 
11.
title Kontextmen%ue%eintrag f%ue%r Verkn%ue%pfungen 
12.
 
13.
::Vorbereitungen 
14.
md "%ProgramFiles%\Linkshell" 2>nul 
15.
set "log=%ProgramFiles%\Linkshell\install.log" 
16.
if exist %log% del %log% 2>nul 
17.
> %log% echo Installationslog des Kontextmenüeintrages für Verknüpfungen 
18.
>> %log% echo ____________________________________________________________ 
19.
>> %log% echo Variablen werden gesetzt 
20.
set "uninstall=" 
21.
set "vbsFullName=%ProgramFiles%\Linkshell\link.vbs" 
22.
>> %log% echo ... 
23.
>> %log% echo Variablen wurden gesetzt 
24.
 
25.
::Einleitung 
26.
echo Dieses Programm f%ue%gt den Eintrag 
27.
echo "%Uue%bergeordneten Ordner %oe%ffnen" in's Kontextmen%ue% hinzu. 
28.
echo Nach der Installation hat man bei Verkn%ue%pfungen 
29.
echo eine neue Option, welche den %ue%bergeordneten Ordner %oe%ffnet, zu Verf%ue%gung 
30.
echo. 
31.
echo. 
32.
 
33.
::Es wird als erstes überprft, ob der Kontextmenüeintrag schon vorhanden ist. 
34.
 
35.
::Überprüfung der Registry 
36.
REG QUERY "HKCR\lnkfile\shell\%ue%ber" 
37.
if "%errorlevel%" EQU "1" ( 
38.
echo Eintrag nicht vorhanden 
39.
set /p "install=Soll der Eintrag nun installiert werden? (Ja/Nein): " 
40.
if not defined install goto errleerins 
41.
42.
:checkins 
43.
if /i "%install:~,1%" EQU "J" goto :Install 
44.
 
45.
if /i "%install:~,1%" EQU "N" goto :Letend 
46.
goto :errfalschunins 
47.
::Uninstall-Frage 
48.
set /p "uninstall=Soll der Kontextmenüeintrag wirklich deinstalliert werden? (Ja/Nein): " 
49.
if not defined uninstall goto :errleerunins 
50.
:checkunins 
51.
if /i "%uninstall:~,1%" EQU "J" goto :Delete 
52.
if /i "%uninstall:~,1%" EQU "N" goto :Holdend 
53.
goto :errfalschunins 
54.
 
55.
::Ausführung der Optionen 
56.
:Install 
57.
 
58.
>> %log% echo. 
59.
>> %log% echo Installationsvorgang wird gestartet 
60.
>> %log% echo Script wird erstellt 
61.
echo. 
62.
echo Ben%oe%tigtes Script wird erstellt 
63.
64.
echo Set oSh=WScript.CreateObject^("WScript.Shell"^) 
65.
echo LNKfullname=oSh.CreateShortcut^(WScript.Arguments^(0^)^).TargetPath 
66.
echo LNKpath=WScript.CreateObject^("Scripting.FileSystemObject"^).GetParentFolderName^(LNKfullname^) 
67.
echo oSh.Run "explorer.exe """ ^& LNKpath ^& """" 
68.
)>"%vbsFullName%" 
69.
>> %log% echo ... 
70.
echo ... 
71.
>> %log% echo Script wurde erstellt 
72.
echo Ben%oe%tigtes Script wurde erfolgreich erstellt 
73.
echo. 
74.
>> %log% echo Registryeinträge werden geschrieben 
75.
echo Ben%oe%tigte Registryeintr%ae%ge werden geschrieben 
76.
reg add "HKCR\lnkfile\shell\%ue%ber" /ve /d "%Uue%bergeordneten Ordner %oe%ffnen" /f 2>nul >nul 
77.
if "%errorlevel%" EQU "1" goto :enderrorInstall 
78.
>> %log% echo ... 
79.
>> %log% echo Registry-Eintrag "HKCR\lnkfile\shell\%ue%ber" wurde geschrieben 
80.
reg add "HKCR\lnkfile\shell\%ue%ber\command" /t REG_SZ /ve /d "%SystemRoot%\system32\wscript.exe \"%vbsFullName%\" \"%%1\"" /f 2>nul >nul 
81.
if "%errorlevel%" EQU "1" goto :enderrorInstall 
82.
>> %log% echo Registry-Eintrag "HKCR\lnkfile\shell\%ue%ber\command" wurde geschrieben 
83.
echo ... 
84.
echo Ben%oe%tigte Registryeintr%ae%ge wurden erfolgreich geschrieben 
85.
goto :installend 
86.
 
87.
:Delete 
88.
reg delete "HKCR\lnkfile\shell\%ue%ber" /f 2>nul >nul 
89.
if "%errorlevel%" EQU "1" set "errA=1" 
90.
rmdir %ProgramFiles%\Linkshell /s /q 2>nul >nul 
91.
if "%errorlevel%" EQU "1" set "errB=1" 
92.
if "%errB%" EQU "1" ( 
93.
if "%errA%" EQU "1" ( 
94.
goto :enderrordelete 
95.
)) 
96.
echo. 
97.
echo Registry-Eintrag wurde erfolgreich gel%oe%scht 
98.
echo Dateien wurden erfolgreich gel%oe%scht 
99.
echo Verzeichnis wurde erfolgreich gel%oe%scht 
100.
goto :deleteend 
101.
 
102.
::Endmeldungen 
103.
:Letend 
104.
echo Der Kontextmen%ue%eintrag wird nicht installiert 
105.
echo Sie k%oe%nnen den kontextmen%ue%eintrag sp%ae%ter installieren 
106.
echo Beliebige Taste zum Beenden dr%ue%cken 
107.
pause >nul 
108.
goto :eof 
109.
:Holdend 
110.
echo Die Option wird behalten 
111.
echo Sie k%oe%nnen den kontextmen%ue%eintrag sp%ae%ter deinstallieren 
112.
echo Beliebige Taste zum Beenden dr%ue%cken 
113.
pause >nul 
114.
goto :eof 
115.
 
116.
:deleteend 
117.
echo. 
118.
echo Deinstallation erfolgreich beendet 
119.
echo Beliebige Taste zum Beenden dr%ue%cken 
120.
pause >nul 
121.
goto :eof 
122.
 
123.
:installend 
124.
echo. 
125.
echo. 
126.
echo Installation erfolgreich beendet 
127.
>> %log% echo ... 
128.
>> %log% echo Installation wurde erfolgreich beendet 
129.
echo Das Installationsverzeichnis wird beim Beenden ge%oe%ffnet 
130.
echo Beliebige Taste zum Beenden dr%ue%cken 
131.
pause >nul 
132.
start "Linkshell" "%ProgramFiles%\Linkshell" 
133.
ping -n 1 localhost >nul 
134.
goto :eof 
135.
 
136.
::Mögliche Errormeldungen 
137.
:errleerins 
138.
echo. 
139.
echo !!Leere Eingabe!! 
140.
set /p "install=Bitte Eingabe wiederholen: " 
141.
if not defined install goto :errleer 
142.
goto :checkins 
143.
:errfalschins 
144.
echo. 
145.
echo !!Falsche Eingabe!! 
146.
set /p "install=Bitte Eingabe wiederholen: " 
147.
if not defined install goto :errfalsch 
148.
goto :checkins 
149.
 
150.
:errleerunins 
151.
echo. 
152.
echo !!Leere Eingabe!! 
153.
set /p "uninstall=Bitte Eingabe wiederholen: " 
154.
if not defined uninstall goto :errleer 
155.
goto :checkunins 
156.
:errfalschunins 
157.
echo. 
158.
echo !!Falsche Eingabe!! 
159.
set /p "uninstall=Bitte Eingabe wiederholen: " 
160.
if not defined uninstall goto :errfalsch 
161.
goto :checkunins 
162.
:enderrorInstall 
163.
echo !!Fehler beim Schreiben in die Registry!! 
164.
echo Das Programm wird nun beendet 
165.
ping -n 3 localhost >nul 
166.
goto :eof
:EDIT: Der Betreffende Übeltäter befindet sich in Zeile 36 (reg query)
Bitte warten ..
Mitglied: 60730
05.08.2010 um 18:01 Uhr
Moin,

"dachte ichs mir doch üüüüü..

Also ich hab keinen Dunst, was dzu da veranstaltest, aber ich schreibe ausschliesslich englische Scripte.

oder schreibst du gehezu beginn? - Nein Goto Start

"Über" - heisst demnach about und wech ist das Problem....

Ps: In Zeile 33 machst du das ja vor

Wobei
N:\>reg query "HKEY_CURRENT_USER\test" 
 
! REG.EXE VERSION 3.0 
 
HKEY_CURRENT_USER\test 
 
HKEY_CURRENT_USER\test\über 
 
N:\>reg query "HKEY_CURRENT_USER\test\über" 
 
! REG.EXE VERSION 3.0 
 
HKEY_CURRENT_USER\test\über

du einfach mal Edit.exe öffnen solltest und in edit deine Umlaute neu setzen solltest - wenn du die denn weiterbehalten willst.
01.
reg query "HKEY_CURRENT_USER\test" 
02.
 
03.
pause 
04.
reg query "HKEY_CURRENT_USER\test\ber" 
05.
pause 
06.
 
C:\script>reg query "HKEY_CURRENT_USER\test" 
 
! REG.EXE VERSION 3.0 
 
HKEY_CURRENT_USER\test 
 
HKEY_CURRENT_USER\test\über 
 
C:\script>pause 
Drücken Sie eine beliebige Taste . . . 
 
C:\script>reg query "HKEY_CURRENT_USER\test\über" 
 
! REG.EXE VERSION 3.0 
 
HKEY_CURRENT_USER\test\über 
 
C:\script>pause 
Drücken Sie eine beliebige Taste . . .
Gruß
Bitte warten ..
Mitglied: kkboy94
05.08.2010 um 18:14 Uhr
Hmm. Ich fasse mich kurz, bin etwas in Eile:

1. Ich weiß nicht welche "Edit.exe" du meinst.
2. Ich habe mal alle "%ue%ber" und "über" ausgetauscht gegen "about", aber das Problem besteht trotzdem weiterhin. Auch in der registry habe ich den schon vorhandenen SChlüssel von "über" in "about" umgeändert, aber trotzdem keine Erfolg.


Achja, ich schreibe gern Denglisch :D


MfG

:EDIT: In Zeile 33 habe ich das Ü einfach nur vergessen
Bitte warten ..
Mitglied: it-frosch
05.08.2010 um 20:00 Uhr
Hallo kkboy94,

ein PROMPT ist das Drücken der ENTER - Taste. Die kennst du sicherlich.

Die Edit.exe ist der Editor des Betriebssystems. Die Datei heißt bei dir vielleicht nur edit dann hast du die Dateiendungen ausgeblendet.

Wichtig - getestet unter Windows XP SP3
Ich habe jetzt mal in eine test.cmd den problematischen Teil deines Codes reinkopiert.
01.
::Überprüfung der Registry  
02.
 
03.
REG QUERY "HKCR\Software\Microsoft\Windows" 
04.
 
05.
if "%errorlevel%" EQU "1" (  
06.
echo Eintrag nicht vorhanden  
07.
set /p "install=Soll der Eintrag nun installiert werden? (Ja/Nein): " 
Wenn ich die test.cmd aufrufe an der Konsole dann bekomme ich das folgende Ergebnis:

C:\Dokumente und Einstellungen\user>REG QUERY "HKCR\Software\Microsoft\Win


! REG.EXE VERSION 3.0

HKEY_CLASSES_ROOT\Software\Microsoft\Windows

HKEY_CLASSES_ROOT\Software\Microsoft\Windows\CurrentVersion
C:\Dokumente und Einstellungen\user>C:\Dokumente und Einstellungen\user>



Deinen Syntaxfehler bekomme ich nicht.

Grüße vom IT-Frosch
Bitte warten ..
Mitglied: Biber
05.08.2010 um 21:21 Uhr
Moin kkboy94,


ich geb dir mal drei Tipps zum lustigen Fehlerrauspuhlen:

  • wenn du das erste Anführungszeichen in 'set "log=%ProgramFiles%\Linkshell\install.log"' und set "vbsFullName=%ProgramFiles%\Linkshell\link.vbs"' jeweils um 5 Zeihen nach rechts verschieben würdest, dann würde dein restliches Skript auch laufen ohne syntaxfehler, wenn "%ProgarmFiles%" ein leerzeichen enthält wie z.B. "C:\Program Files"
  • wenn du zwei Häufchen machst und den linken Haufen alle Sprungmarkennamen legst, die mit "goto :whatever" angesprungen werden und auf den rechten Haufen alle Sprungmarken, die ":whatever" heissen.... fällt dir was auf?
  • und letzter Tipp: Wenn du irgendwo einen nicht soforf erkennbaren Fehler in einem Schnipsel hast dann
a) Ersetze alle Ausgabe in %log% und in %vbsfile% doch erstmal in Bildschirmausgaben 'set "log=con"/Set "vbsfile=con"'
b) AUF GAR KEINEN FALL geh mit Behauptungen wie ":EDIT: Der Betreffende Übeltäter befindet sich in Zeile 36 (reg query)" heran. Fehlersuche muss ergebnisoffen sein.

Du hast hier viele viele gute Leute um die ganz falschen Häuser geschickt.

Na ja, so viele so gute nun auch nicht, aber trotzdem...

Grüße
Biber
Bitte warten ..
Mitglied: kkboy94
06.08.2010 um 17:08 Uhr
Danke bastla für die hilfreichen Tipps
Der zweite Tipp: Da ist mir gar nicht aufgefallen, dass ich da so einiges vertauscht, bzw. vergessen hatte.
Hiermit entschuldige ich mich auch direkt mal für )b von Tipp Nr. 3, denn der Fehler lag gar nicht im Befehl "reg query" sondern in der IF-Überprüfung danach: Jetzt sieht meine Batch in dem Teil folgendermaßen aus:
01.
REG QUERY "HKCR\lnkfile\shell\%ue%ber" 2>nul >nul 
02.
if "%errorlevel%"=="1" ( 
03.
goto :askInstall 
04.
) else ( 
05.
goto :askUninstall 
06.
)
Und ich entschuldige mich auch mal direkt bei Timo und dem Frosch, weil ich euch vergeblich nach einem nicht vorhandenem Fehler habe suchen lassen.
Das ist mir aber auch erst aufgefallen, als ich dann jeden Befehl einzeln getestet habe.
Danke für die Vorschläge, die sicher geholfen hätten, wenn ich den Fehler nicht direkt auf reg query geschoben hätte.


MfG Karsten
Bitte warten ..
Mitglied: bastla
06.08.2010 um 18:05 Uhr
Hallo kkboy94!
Danke bastla für die hilfreichen Tipps
Das "Danke" reiche ich hiermit bestimmungsgemäß an Biber weiter ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
06.08.2010 um 18:33 Uhr
Moin bastla,

Zitat von bastla:
Das "Danke" reiche ich hiermit bestimmungsgemäß an Biber weiter ... ´
Ist angekommen, danke

Grüße an alle
Biber
Bitte warten ..
Mitglied: it-frosch
07.08.2010 um 07:54 Uhr
Hallo Karsten,

gut das du es gefunden hast.

Ein schönes WE.

it-frosch
Bitte warten ..
Mitglied: kkboy94
07.08.2010 um 14:17 Uhr
Oh schuldigung biber. Ihr helft mir beide imm er so viel, deswegen... Es fangen ja auch beide namen mit B an^^.
Bitte warten ..
Mitglied: Biber
07.08.2010 um 14:28 Uhr
{OT]
Zitat von kkboy94:
Oh schuldigung biber. Ihr helft mir beide imm er so viel, deswegen... Es fangen ja auch beide namen mit B an^^.
Ist verständlicn... zudem schreiben sich beiden Nicks ohne "tz" und ohne "y"....da kann das schon mal passieren.
Ich verwechsele auch manchmal FDH, FDJ und FDP...
Du kannst uns aber leicht auseinanderhalten... bastla ist der Rechtsüberholer.

Grüße
Biber
[/OT]
Bitte warten ..
Mitglied: bastla
07.08.2010 um 15:25 Uhr
[OT too]
... und noch ein Unterschied: FDH verwechsle ich nicht, das ignoriere ich ...

Allen ein schönes Wochenende
bastla
[/OT too]
Bitte warten ..
Mitglied: kkboy94
07.08.2010 um 15:29 Uhr
Hmm oke, und wer is dann eher der Einzeilen-Batchler?
Nach dem, was ich gelesen hab, ja eher Biber, und bastla is mehr in VBS versiert oder?
Und was meinst du mit "Rechtsüberholer"


Euch auch nochn schönes WE

[More OT]
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst New-ADUser (optional Parameter) (13)

Frage von mc-doubleyou zum Thema Batch & Shell ...

Windows Update
Package Publisher - Copy has failed falscher Parameter

Frage von Belloci zum Thema Windows Update ...

Python
gelöst PHP Skript via Python starten mit JSON Objekt als Parameter (3)

Frage von nullacht15 zum Thema Python ...

Batch & Shell
gelöst Powershell: CMD Kommando mit Parameter aufrufen (8)

Frage von bonnerjung zum Thema Batch & Shell ...

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

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

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...