2017-02-07 5 views
6

は(それはちょうどコンソールに最初の引数を出力します):"//"で始まる引数を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)); 

そして私は、私は次のエラーを取得

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

ような何かをしようと

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

quotes.Itにもかかわらず、これはWindowsスクリプトホストのオプションとみなされます。 //で始まる引数をどのように渡すことができます。名前付き引数?

答えて

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

cscript自身の引数解析を終了するダブルスラッシュを渡します。

ノート

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 

出力(申し訳ありませんが、スペイン語ロケール):それはWindows 7と10

テストスクリプトの任意の場所を文書化しますが、テストされている場合、私は知りません

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

ワウ。グレートハック!私はどこに書かれているのか見ていないが、もう一度チェックする – npocmaka

3

結局、名前付き引数で動作します。

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

cscript myscript.wsf /test:"//test" 
関連する問題