2017-02-07 5 views
6

Si je le script suivant (qui écrit seulement le premier argument de la console):Comment passer un argument commençant par "//" à un script wsh?

@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)); 

Et j'essayer quelque chose comme

C:\>test.bat "//test" 

Je reçois l'erreur suivante

Input Error: Unknown option "//test" specified.

Malgré les citations.Il est pris comme une option à l'hôte de script Windows. Comment passer un argument commençant par //. Arguments nommés?

Répondre

12
cscript //E:JScript //nologo "%~f0" // %* 

double barre oblique Passez un entier pour mettre fin à l'analyse syntaxique propre argument cscript.

Note: Je ne sais pas s'il est documenté nulle part, mais testé sur Windows 7 et 10

script Test:

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 

sortie (désolé, locale espagnol):

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

Wow. Super piratage! Je n'ai pas vu cela documenté nulle part, mais je vais vérifier à nouveau – npocmaka

3

Il fonctionne après tout avec des arguments nommés.

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

et

cscript myscript.wsf /test:"//test"