Mein Code hat einen Syntaxtfehler bei "if %Bauteil%" Line 24. Kann mir jmd sagen warum? @Echo off set "Prog=cmd.exe" echo Bitte zu pruefendes Bauteil waehlen echo 1. T-Stueck Komplett Zeichnung: 279667489 echo 2. Oeffner-Anschluss Zeichnung: 279658760 set /p Bauteil= echo Bauteil: %Bauteil% >> messung.txt :Ja set "NewPID=" for /f "delims=" %%l in ('for /f "skip=3 tokens=2" %%p in ^('tasklist /fi "imagename eq %Prog%"'^) do @^<NUL set /p "=%%p "') do (set "PIDs=%%l") echo Messung >> messung.txt echo Bitte Benutzernamen eingeben set /p Benutzer= echo Benutzer %Benutzer% >> messung.txt echo Bitte Teilenummer eingeben set /p Teil= echo Teil %Teil% >> messung.txt echo Bitte Messdauer in Sekunden eingeben set /p Messdauer= echo Messdauer %Messdauer% >> messung.txt echo Bitte Art der Messung waehlen if "%Bauteil%"=="1"( echo 1. T2-T1 echo 2. T1-T3 ) if "%Bauteil%"=="2"( echo 1. T2-A echo 2. T2-C echo 3. T2-Leckage ) set /p Messung= if "%Bauteil%"=="2" ( if "%Messung%"=="1" ( echo Messungsart T2-A >> messung.txt echo Sollwert 100 >> messung.txt ) if "%Messung%"=="2" ( echo Messungsart T2-C >> messung.txt echo Sollwert 100 >> messung.txt ) if "%Messung%"=="3" ( echo Messungsart T2-L >> messung.txt echo Sollwert 0,1 >> messung.txt ) ) if "%Bauteil%"=="1" ( if "%Messung%"=="1" ( echo Messungsart T2-T1 >> messung.txt echo Sollwert 20 >> messung.txt ) if "%Bauteil%"=="1" if "%Messung%"=="2" ( echo Messungsart T1-T3 >> messung.txt echo Sollwert 100 >> messung.txt ) ) echo Zum Starten der Messung beliebige Taste drücken... pause @echo Messung wird gestartet echo messung_start >> messung.txt start Messung.cmd for /f "skip=3 tokens=2" %%p in ('tasklist /fi "imagename eq %Prog%"') do (echo %PIDs% | find "%%p" > NUL || if not defined NewPID set "NewPID=%%p") if defined NewPID echo Neue Instanz: %NewPID% timeout /T %Messdauer% taskkill /pid %NewPID% echo messung_ende>> messung.txt ECHO Moechten Sie noch eine Messung durchfuehren ? (j / n) SET /p wahl= if '%wahl%' == 'n' goto Nein if '%wahl%' == 'j' goto Ja Goto Ende :Nein echo Programm_Ende >> messung.txt @echo Messung abgeschlossen goto Ende :Ende pause
vielen dank kaj dein link hat mir leider nicht geholfen. wenn du mir einfach gesagt hättest das ein leerzeichen zwischen dem logischen und dem do teil stehen muss hätte mir das deutlich mehr geholfen
gmt schrieb: > vielen dank kaj dein link hat mir leider nicht geholfen. > > wenn du mir einfach gesagt hättest das ein leerzeichen zwischen dem > logischen und dem do teil stehen muss hätte mir das deutlich mehr > geholfen Wenn du einfach die Zeile 24 in irgendeine Art und Weise gekennzeichnet hättest, so dass ich nicht hätte suchen und raten müssen welche Zeile eigentlich gemeint war, hätte ich es dir verraten können. Die Windows batch-Sprache ist extrem empfindlich was Leerzeichen angeht. Pass auch auf mit Leerzeichen bei Variabelenzuweisungen und am Ende der Zeilen: Das hier ist alles unterschiedlich VAR=Etwas| VAR= Etwas | VAR="Etwas"| Und Konstrukte wie > for /f "delims=" %%l in ('for /f "skip=3 tokens=2" %%p in ^('tasklist > /fi "imagename eq %Prog%"'^) do @^<NUL set /p "=%%p "') do (set > "PIDs=%%l") würd eich an deiner Stelle auseinander reißen und wenigstens Ansatzweise versuchen besser lesbar und damit besser wartbar zu machen. Alternativ wäre nach eine andere Skriptsprache wie zB. Python umzuschauen. PS. Was passiert wenn der Benutzer bei der 1. Frage "3" oder "Weissnicht" eingibt?
:
Bearbeitet durch User
Es ist etwas OT, aber willst Du Dir wirklich die Windows Shell für Batchprogrammierung antun? Ich nehme für soetwas gerne https://www.cygwin.com/. Oder aber wenn es proprietär sein darf die Windows PowerShell.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.