[Batchfile] parameter werkt niet? een simpele Setupfile

Pagina: 1
Acties:

  • Jazco2nd
  • Registratie: Augustus 2002
  • Laatst online: 21:57
Ik ben bezig een simpel setupbestandje te maken setup.cmd, bestaat uit 2 delen, :Install (als laatste commando GOTO :eof) en :Uninstall.
Nu wil ik dat hij Uninstall uitvoert als ik het commando setup.cmd uninstall geef. Helaas werkt dit niet.

Dit is een simpeler voorbeeld (dat ook niet werkt):
test.bat
code:
1
2
3
IF [%1]==12 GOTO s_december
:: other commands
:s_december

ik voer uit: test.bat 12
maar helaas :(

en zo ziet mijn code eruit:
code:
1
2
3
4
5
6
7
8
9
10
11
@echo off
IF /I NOT [%1]==Uninstall GOTO :Install

:Install
echo Install wordt uitgevoerd
pause
GOTO :eof

:Uninstall
echo UNinstall wordt uitgevoerd
pause

Helaas voert hij nu gewoon Install uit (en daarna Uninstall als ik de GOTO :eof weghaal), of ik nou het commando setup.bat Uninstall geef of niet.

Ik heb verschillende overichten op websites bekeken met alle cmd commando's. Het bovenste voorbeeld komt van http://www.ss64.com/nt/goto.html.
Het wordt daar als voorbeeld gegeven dus dan moet het toch werken? Op een andere site zag ik dat het commando ook gewoon zo uitgevoerd kan worden. Toch werkt het niet.
zowel met .cmd als .bat extensie geprobeerd.

  • Rone
  • Registratie: April 2002
  • Niet online

Rone

Moderator Tweaking
Voor zover ik weet moeten er helemaal geen brackets om de %1-variabele. Bovendien moet je de colon weghalen na het GOTO-commando. Dus niet GOTO :Uninstall, maar GOTO Uninstall.

Dit wordt in het door jou gegeven voorbeeld ook gedaan. Waarom doe jij het dan niet? :)

edit:

code:
1
2
3
4
5
6
7
8
9
10
11
@echo off
IF %1==Uninstall GOTO Uninstall

:Install
echo Install wordt uitgevoerd
pause
GOTO :eof

:Uninstall
echo Uninstall wordt uitgevoerd
pause

Dat zou moeten werken :)

[ Voor 105% gewijzigd door Rone op 31-05-2006 16:09 ]

PC1: 9800X3D + RX 9070 XT
PC2: 5800X3D + RTX 3080


  • Jazco2nd
  • Registratie: Augustus 2002
  • Laatst online: 21:57
Omdat het zonder brackets een foutmelding geeft (iets van "Goto werd niet verwacht").
Tenminste dat dacht ik, ik zag net op een andere site een goed voorbeeld waarbij (%1)==(bla) werd gebruikt. Dus ik ook ronde haakjes proberen en jaahooor.
Zowel voor als na de == moet het in ronde haakjes.

Dus dit topic is helemaal niet nodig, wissen aub!

BTW, ook met brackets aan beide kanten werkt het...
wat ik niet snap is dat het nu ook werkt zonder haakjes of brackets terwijl ik eerst toch echt die error kreeg..
anyways, het werkt.

Verwijderd

r00n schreef op woensdag 31 mei 2006 @ 16:03:
Voor zover ik weet moeten er helemaal geen brackets om de %1-variabele. Bovendien moet je de colon weghalen na het GOTO-commando. Dus niet GOTO :Uninstall, maar GOTO Uninstall.

Dit wordt in het door jou gegeven voorbeeld ook gedaan. Waarom doe jij het dan niet? :)

edit:

code:
1
2
3
4
5
6
7
8
9
10
11
@echo off
IF %1==Uninstall GOTO Uninstall

:Install
echo Install wordt uitgevoerd
pause
GOTO :eof

:Uninstall
echo Uninstall wordt uitgevoerd
pause

Dat zou moeten werken :)
idd die brackets moeten weg. echter als %1 een lege var is dan krijgt je batch een error.
meestal wordt if "%1"=="waarde" gebruikt. als %1 nu leeg is heb je nog wel een geldige compare (""=="waarde"). misschien dat je de brackets ook zo kan gebruiken, maar dat moet je testen.

edit: het werkt dus. De goto error die je krijgt is waarschijnlijk doordat %1 leeg was (if ==waarde is geen valide compare)

die goto :label is gewoon prima, met een call :label moet je die zelfs gebruiken.

[ Voor 22% gewijzigd door Verwijderd op 31-05-2006 16:27 ]


  • Jazco2nd
  • Registratie: Augustus 2002
  • Laatst online: 21:57
edit: het werkt dus. De goto error die je krijgt is waarschijnlijk doordat %1 leeg was (if ==waarde is geen valide compare)
Dat klopt inderdaad!
ik gebruik dus wel brackets, geen parameter (%1 is dus leeg) > installeren , wel de parameter Goto :uninstall. Werkt prima.
Bedankt voor de info!

[ Voor 3% gewijzigd door Jazco2nd op 01-06-2006 01:05 ]