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