o0julia0o
Goto Top

Wenn echo gleich G dann springe zu G

hi, so habe ich es versucht - klappt aber nicht:

@echo off
IF echo %~d0 = "H:" goto :H  
:G
echo Bin bei G
pause
echo Bin bei H
:H

wo ist das Problem?

danke!

Content-ID: 397282

Url: https://administrator.de/contentid/397282

Ausgedruckt am: 25.11.2024 um 20:11 Uhr

Xaero1982
Xaero1982 06.01.2019 aktualisiert um 10:28:53 Uhr
Goto Top
Nabend,

@echo off
IF "%~d0" == "H:" goto H  

:G
echo Bin bei G
goto EOF

:H
echo Bin bei H
goto EOF

:EOF

Versuchs mal so ...
rubberman
Lösung rubberman 06.01.2019 aktualisiert um 01:25:21 Uhr
Goto Top
Beinah.

wo ist das Problem?
Mehr als nur ein Problem. Hauptproblem ist, dass du zwar seit mehreren Jahren Batchcode schreibst, aber selbst die einfachsten Grundlagen noch immer nicht weißt. (Manch anderer würde behaupten, Hauptgrund ist, dass man heutzutage immer noch Batchcode schreibt.)

ECHO triggert die Ausgabe in das Konsolefenster. In einem IF Statement hat ein ECHO also überhaupt nichts zu suchen.

IF wiederum vergleicht Strings so wie sie geschrieben stehen. Und wenn sie in Anführungszeichen stehen, werden auch die Anführungszeichen mit verglichen.

Vergleichsoperator für Gleichheit ist == während = der Operator für Zuweisungen ist.

GOTO braucht man vielleicht für Schleifenvarianten die Batch nicht kennt (bspw. while Schleifen). Für so ziemlich alles andere ist es kontraproduktiv und erzeugt Spaghetticode.

@echo off

if "%~d0"=="H:" (  
  echo Laufwerk H:
) else (
  echo Laufwerk G:
)

pause
Steffen
Penny.Cilin
Penny.Cilin 06.01.2019 um 15:11:19 Uhr
Goto Top
o0Julia0o
o0Julia0o 09.01.2019 aktualisiert um 22:02:40 Uhr
Goto Top
Ah danke! Mit 2ten klappt es nun. Bei einem 4ten Abzweig muss man Ende auch viermal ) machen:

@echo off
if "%~d0"=="G:" (  
echo g
) else (
if "%~d0"=="H:" (  
echo H
) else (
if "%~d0"=="I:" (  
echo I
) else (
if "%~d0"=="J:" (  
echo J
) else (
echo nix von G-J
))))
exit
)
pause
rubberman
Lösung rubberman 09.01.2019 aktualisiert um 23:55:57 Uhr
Goto Top
Zitat von @o0Julia0o:
muss man Ende auch viermal ) machen:
Nein. Das ist eher eine unglücklich gewählte Syntax. Einfacher:
if "%~d0"=="G:" (  
  echo g
) else if "%~d0"=="H:" (  
  echo H
) else if … etc. (

Oder auch prozedural
@echo off &setlocal
call :LW_%~d0 2>nul || echo anderes Laufwerk
pause
exit /b

:LW_G
echo G
exit /b

:LW_H
echo H
exit /b

:LW_I
echo I
exit /b

:LW_J
echo J
exit /b
Steffen