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?

    Cheers

    ss.
     
    Synapse Syndrome [KGB], Jun 13, 2009
    #1
    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
     
    Al Dunbar, Jun 13, 2009
    #2
    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
    this:

    @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
    #3
  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
     
    Al Dunbar, Jun 13, 2009
    #4
    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.