How to make goto when nowhere to go ?

Discussion in 'Scripting' started by Synapse Syndrome [KGB], Jun 13, 2009.

  1. (NT shell scripting)

    Say I have a goto parameter command -

    goto :%parm%

    If the batch label does not exist, the script ends with the error:

    "The system cannot find the batch label specified - whatever"

    I do not want the error message displayed, and I want the script to go and
    do something else instead. If I try..

    goto :%parm:~2% || goto :error

    ...that does not work.

    Any solution?


    Synapse Syndrome [KGB], Jun 13, 2009
    1. Advertisements

  2. Synapse Syndrome [KGB]

    Al Dunbar Guest

    NT shell scripting, on what O/S: nt3.51, nt4, w2k, w2k3, w2k8, xp?

    I don't think you can trap an attempt to go to an invalid label. The
    alternative is to check the value of the parm variable to see if it is a
    valid label. One way:

    do %%L in (label1 label2 label3) if "%parm%" EQU "%%L" goto:%parm%

    Another way would be to use FIND or FINDSTR to search the batch file for
    instances of ":%parm%". Trouble is if there was a "label called ":whatsit"
    and the value of parm was "what"...

    Al Dunbar, Jun 13, 2009
    1. Advertisements

  3. If you want your batch file to be robust then you must check if the
    parameter passed to it is a valid label. Relying on some internal error
    capturing process is not good a programming technique. You could do it like

    @echo off
    set Labels=/one/two/three/twenty/
    if not "%1"=="" echo %Labels% | find /i "/%1/" > nul || echo Invalid label

    Make sure to surround each label name with a forward slash and not to use
    any labels with embedded forward slashes.
    Pegasus [MVP], Jun 13, 2009
  4. Synapse Syndrome [KGB]

    Al Dunbar Guest

    Yeah, I always forget the DO. Fortunately, that throws an error which
    reminds me. So thanks for being the error message in this case ;-)

    Al Dunbar, Jun 13, 2009
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.