2016-10-15 2 views
0

.vbsファイルでコマンドライン全体を取得するにはどうすればよいですか?私はすべての特殊文字/引用符をそのまま残して、それを自分自身で処理しようとしています。生のVBScriptコマンドライン引数を取得するにはどうすればよいですか?

たとえば、コマンド:

WScript.Arguments.Named.Item("month") 
= April 

WScript.Arguments.Item(2) 
= Joe Smith 

Dim StrArgs 
For Each arg In WScript.Arguments 
    StrArgs = StrArgs & " " & arg 
Next 
= /month:April /price:500 Joe Smith is our guy 

これらのメソッドはすべて引用符をマングルストリップ:

cscript.exe example.vbs /month:April /price:500 "Joe Smith" is "our" guy 

は、私は興味がありません。

/月:4月/価格:500 "ジョー・スミスは"

+0

できません。私は希望的なプログラミングが好きです。 –

+2

[this](http://stackoverflow.com/a/31100398/2861476)があなたのニーズに適応できるかどうかを確認してください –

+1

@MCND実際には、はい。私の質問は、その正確な複製のように見え、私はその答えを使うことができます。ありがとう。 – meiskam

答えて

-2

あなたが使用することができます "私たち" 男であるWMI

は、私がどのような方法で未処理の生の引数を取得したいです:

Option Explicit 

Const wbemFlagReturnImmediately = &h10 
Const wbemFlagForwardOnly = &h20 

Dim oWMI : Set oWMI = GetObject("winmgmts:\\.\root\CIMV2") 
Dim oCol : Set oCol = oWMI.ExecQuery(_ 
    "SELECT Commandline FROM Win32_Process", _ 
    "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly) 
Dim oElm 
For Each oElm In oCol 
    If Instr(oElm.CommandLine, "40056204.vbs") Then 
     WScript.Echo "CommandLine: " & oElm.CommandLine 
    End If 
Next 

出力:

cscript 40056204.vbs /month:April /price:500 "Joe Smith" is "our"  guy 
CommandLine: cscript 40056204.vbs /month:April /price:500 "Joe Smith" is "our"  guy 
+0

私が見る唯一の問題は、同じスクリプトの2つのインスタンスを実行できることです。 –

+0

@MCND - いいえ、あなたはこのコードの合理化されたバージョンをライブラリに/コマンドラインが必要な各ファイルに入れます。 –

+0

申し訳ありませんが、私は同じディスクファイルで同じスクリプトについて話していましたが、同時にいくつかのインスタンスが異なる引数で実行されていました。 –

関連する問題