How to pass an argument that starts with “//” to a wsh script?

后端 未结 2 1434
野趣味
野趣味 2021-01-12 17:56

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:JSc         


        
相关标签:
2条回答
  • 2021-01-12 18:15

    It works with named arguments after all.

    WScript.Echo(WScript.Arguments.Named.Item("test"));
    

    and

    cscript myscript.wsf /test:"//test"
    
    0 讨论(0)
  • 2021-01-12 18:31
    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:\>
    
    0 讨论(0)
提交回复
热议问题