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-Key: 397282

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

Printed on: April 16, 2024 at 20:04 o'clock

Member: Xaero1982
Xaero1982 Jan 05, 2019, updated at Jan 06, 2019 at 09:28:53 (UTC)
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 ...
Member: rubberman
Solution rubberman Jan 06, 2019 updated at 00:25:21 (UTC)
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
Member: Penny.Cilin
Penny.Cilin Jan 06, 2019 at 14:11:19 (UTC)
Goto Top
Member: o0Julia0o
o0Julia0o Jan 09, 2019 updated at 21:02:40 (UTC)
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
Member: rubberman
Solution rubberman Jan 09, 2019 updated at 22:55:57 (UTC)
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