|
server
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
How to make goto when nowhere to go ?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.
Show quote
Hide quote
"Synapse Syndrome [KGB]" <synapse@NOSPAMsyndrome.me.uk> wrote in message NT shell scripting, on what O/S: nt3.51, nt4, w2k, w2k3, w2k8, xp?news:eG0tC$86JHA.1196@TK2MSFTNGP03.phx.gbl... > (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? 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
Show quote
Hide quote
On Jun 12, 11:46 pm, "Al Dunbar" <aland***@hotmail.com> wrote: Your batch skills are a bit rusty, Al. That should be ...> "Synapse Syndrome [KGB]" <syna...@NOSPAMsyndrome.me.uk> wrote in messagenews:eG0tC$86JHA.1***@TK2MSFTNGP03.phx.gbl... > > > > > (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? > > 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 FOR %%L in (label1 label2 label3) DO if "%parm%" EQU "%%L" goto:%parm % Tom Lavedas **************
Show quote
Hide quote
"T Lavedas" <tglba***@cox.net> wrote in message Yeah, I always forget the DO. Fortunately, that throws an error which news:a34a7562-8512-4d0f-bf96-bc0b5e4df860@y6g2000prf.googlegroups.com... > On Jun 12, 11:46 pm, "Al Dunbar" <aland***@hotmail.com> wrote: >> "Synapse Syndrome [KGB]" <syna...@NOSPAMsyndrome.me.uk> wrote in >> messagenews:eG0tC$86JHA.1***@TK2MSFTNGP03.phx.gbl... >> >> >> >> > (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? >> >> 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 > > Your batch skills are a bit rusty, Al. That should be ... > > FOR %%L in (label1 label2 label3) DO if "%parm%" EQU "%%L" goto:%parm > % > > Tom Lavedas > ************** reminds me. So thanks for being the error message in this case ;-) /Al
Show quote
Hide quote
"Synapse Syndrome [KGB]" <synapse@NOSPAMsyndrome.me.uk> wrote in message If you want your batch file to be robust then you must check if the news:eG0tC$86JHA.1196@TK2MSFTNGP03.phx.gbl... > (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. 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.
issue on scripting syntax on x64
IP "Alternate configuration" ANN: EditVar/EditV32/EditV64 and Choose/Choose32/Choose64 v2.0 Finding password protected files auto add sutdents to AD 2008 Suppress confirmation prompts Maximum number of connected users question on USB security How to use variables to map network drive adding printer depending on username |
|||||||||||||||||||||||