If I have the following script (that just prints the first argument to the console):
@if (@X)==(@Y) @end /* JScript comment
@echo off
cscript //E:JScript //nologo "%~f0" %*
exit /b %errorlevel%
@if (@X)==(@Y) @end JScript comment */
WScript.Echo(WScript.Arguments.Item(0));
And I try something like
C:\>test.bat "//test"
I get the following error
Input Error: Unknown option "//test" specified.
Despite the quotes.It is taken as an option to the the windows script host.
How can pass an argument that starts with //
. Named arguments?
You can pass the arguments to any bash script when it is executed. There are several simple and useful ways to pass arguments in a bash script. In this article guide, we will let you know about some very easy ways to pass and use arguments in your bash scripts. Create a new file with any name using the “touch” command, e.g., “file.sh”.
In a shell script, you can pass variables as arguments by entering arguments after the script name, for example ./script.sh arg1 arg2. The shell automatically assigns each argument name to a variable. Arguments are set of characters between spaces added after the script.
The shell automatically assigns each argument name to a variable. Arguments are set of characters between spaces added after the script. To specify an argument that includes spaces, you need to enclose the complete argument in double quotation marks. Each script argument entered at the command line has a default variable name.
Each script argument entered at the command line has a default variable name. The first argument after the script name is assigned to the variable $1, the second argument to $2, and so on. This is a simple script displays information about a user to understand about script shell argument.
cscript //E:JScript //nologo "%~f0" // %*
Pass a double slash to end the cscript
own argument parsing.
note: I don't know if it is documented anywhere, but tested on windows 7 and 10
Test script:
Option Explicit
Dim argument
For Each argument In WScript.Arguments
WScript.Echo "argument: " & argument
Next
For Each argument In WScript.Arguments.Named
WScript.Echo "Named: " & argument
Next
For Each argument In WScript.Arguments.UnNamed
WScript.Echo "UnNamed: " & argument
Next
Output (sorry, spanish locale):
W:\>cscript //nologo test.vbs //test
Error de entrada: Opción desconocida "//test" especificada.
W:\>cscript //nologo test.vbs // //test /one two
argument: //test
argument: /one
argument: two
Named: /test
Named: one
UnNamed: two
W:\>cscript test.vbs // //nologo //test /one two
Microsoft (R) Windows Script Host versión 5.812
Copyright (C) Microsoft Corporation. Reservados todos los derechos.
argument: //nologo
argument: //test
argument: /one
argument: two
Named: /nologo
Named: /test
Named: one
UnNamed: two
W:\>
It works with named arguments after all.
WScript.Echo(WScript.Arguments.Named.Item("test"));
and
cscript myscript.wsf /test:"//test"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With