Fehlermeldung 2.934 kann syntaktisch an dieser Stelle nicht verarbeitet werden
Ich möchte in einer Batchdatei abfragen, ob ein vorhandener Verzeichniseintrag eine Verbindung oder eine Verknüpfung ist.
Die Abfrage erledige ich mit dem Tool ln über den Befehl
D:\daten\hardlink\ln --symbolic "%wohin%"
Natürlich wird die Variable wohin vorher mit einem Verzeichnispfad befüllt.
Da das ganze so weit als möglich automatisch ablaufen soll, wird der Befehl in der Batchdatei wie folgt integriert.
Bis zu diesem Punkt funktioniert alles wie gewünscht.
Jedoch gibt es bei der Abfrage, ob der Verzeichniseintrag eine Verbindung oder eine Verknüpfung ist, die oben erwähnte Fehlermeldung.
Aus diesem Grund habe ich die Entfernung der Leerzeichen am Beginn und am Ende des Strings eingebaut.
Leider ohne Erfolg, der Fehler bleibt.
Ein anderer Versuch, die Ausgabe in eine Datei umzuleiten, und den Dateiinhalt auszuwerten, bringt auch keinen Erfolg.
Lese ich den Dateiinhalt aus, oder lasse ich den Inhalt der Variablen anzeige, erhalte ich immer die Info ln 2.934
Es ist auch egal, ob ich den Abfragewert in Anführungszeichen setze, oder nicht, die Fehlermeldung bleibt.
Im Anschluß der Inhalt der Batchdatei
Hier wird die Abarbeitung de Batchdatei mit der Fehlermeldung abgebrochen
Auch der Umweg über das Auslesen der gespeicherten Datei mit dem Befehl
ändert nichts.
Eine andere Änderung der Abfrage in
bringt auch keine Fehlerbehebung
Wo liegt mein Tippfehler oder mein Denkfehler?
Bitte um Hilfe
Danke im voraus
Gerry
Die Abfrage erledige ich mit dem Tool ln über den Befehl
D:\daten\hardlink\ln --symbolic "%wohin%"
Natürlich wird die Variable wohin vorher mit einem Verzeichnispfad befüllt.
Da das ganze so weit als möglich automatisch ablaufen soll, wird der Befehl in der Batchdatei wie folgt integriert.
for /f "tokens=* delims=>" %%b in ('D:\daten\hardlink\ln --symbolic "%wohin%"') do set testsymb=%%b
Bis zu diesem Punkt funktioniert alles wie gewünscht.
Jedoch gibt es bei der Abfrage, ob der Verzeichniseintrag eine Verbindung oder eine Verknüpfung ist, die oben erwähnte Fehlermeldung.
Aus diesem Grund habe ich die Entfernung der Leerzeichen am Beginn und am Ende des Strings eingebaut.
Leider ohne Erfolg, der Fehler bleibt.
Ein anderer Versuch, die Ausgabe in eine Datei umzuleiten, und den Dateiinhalt auszuwerten, bringt auch keinen Erfolg.
Lese ich den Dateiinhalt aus, oder lasse ich den Inhalt der Variablen anzeige, erhalte ich immer die Info ln 2.934
Es ist auch egal, ob ich den Abfragewert in Anführungszeichen setze, oder nicht, die Fehlermeldung bleibt.
Im Anschluß der Inhalt der Batchdatei
@echo symbolic test
:rem Variable testln1 leeren
set testsymb=
D:\daten\hardlink\ln --symbolic "%wohin%"
D:\daten\hardlink\ln --symbolic "%wohin%" >d:\test1.txt
for /f "tokens=* delims=>" %%b in ('D:\daten\hardlink\ln --symbolic "%wohin%"') do set testsymb=%%b
:rem Die ersten 5 Zeichen (die linken 5 Zeichen) der Variablen testln1 in die Variable testln2 schreiben
@echo 1 testsymb=%testsymb%
:rem hier werden alle Leerzeichen am Anfang und am Ende der Stringvariablen entfernt
:loopLNsymb1xcopyverz
if "%testsymb:~0,1%"==" " set "testsymb=%testsymb:~1%" & goto :loopLNsymb1xcopyverz
:loopLNsymb2xcopyverz
if "%testsymb:~-1%"==" " set "testsymb=%testsymb:~0,-1%" & goto :loopLNsymb2xcopyverz
@echo 1 testsymb=%testsymb%
set testlnsym3=%testsymb:~0,8% >d:\test3.txt
@echo 22b symbolic testlnsym3 = %testlnsym3%
if %testlnsym3% EQU "ln 2934" goto 1459
Auch der Umweg über das Auslesen der gespeicherten Datei mit dem Befehl
set /p testlnsym3=<d:\test1.txt
Eine andere Änderung der Abfrage in
if %testlnsym3%=="ln 2934" goto 1459
Wo liegt mein Tippfehler oder mein Denkfehler?
Bitte um Hilfe
Danke im voraus
Gerry
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 670347
Url: https://administrator.de/forum/fehlermeldung-2-934-kann-syntaktisch-an-dieser-stelle-nicht-verarbeitet-werden-670347.html
Ausgedruckt am: 24.12.2024 um 16:12 Uhr
2 Kommentare
Neuester Kommentar
ob ein vorhandener Verzeichniseintrag eine Verbindung oder eine Verknüpfung ist.
@echo off
set "item=D:\Whatever"
for /f "delims=" %%a in ('powershell -EP Bypass -C "(get-item -LiteralPath '%item%').LinkType -eq 'SymbolicLink'"') do set "isSymLink=%%a"
if /i "%isSymLink%" == "True" (
echo Pfad "%item%" ist ein symbolischer Link
) else (
echo Pfad "%item%" ist kein symbolischer Link
)
Moin.
Netter Versuch, denn Strings mit Leer-/Sonderzeichen musst du schon in Anführungszeichen setzen. Wenn
Denk noch mal drüber nach, ob Batch wirklich noch eine Sprache ist, wo du Energie rein stecken willst um die ganzen Besonderheiten und Fallstricke zu lernen ...
Grüße
Steffen
EDIT:
Eine andere Änderung der Abfrage in
bringt auch keine Fehlerbehebung
if %testlnsym3%=="ln 2934" goto 1459
Netter Versuch, denn Strings mit Leer-/Sonderzeichen musst du schon in Anführungszeichen setzen. Wenn
%testlnsym3%
zu einem String mit Leerzeichen expandiert wird, dann natürlich auch dort. Uuund du arbeitest mit Batch, und da gehören die Anführungszeichen zur verglichenen Zeichenfolge. Heißt, xyz
und "xyz"
sind nicht dasselbe.Denk noch mal drüber nach, ob Batch wirklich noch eine Sprache ist, wo du Energie rein stecken willst um die ganzen Besonderheiten und Fallstricke zu lernen ...
Grüße
Steffen
EDIT:
2.934
ist auch nicht dasselbe wie 2934
, wenn man die Fehlermeldung mal dem gegenüber stellt, was du im Code stehen hast.