2016-06-23 9 views
1

...スクリプト部分で使用するために変数をWSFファイルに格納することはできますか?これに代わる方法として

<job> 
<script language="VBScript"> 
sqlquery = " some text just for demonstrating what I mean " & _ 
      " some text just for demonstrating what I mean " & _ 
      " some text just for demonstrating what I mean " 

statement = connection.execute(sqlquery) 

'more code 

</script> 
</job> 

は、この可能性のようなものですか? ...つまり

<job> 

<sqlquery> 
some text just for demonstrating what I mean 
some text just for demonstrating what I mean 
some text just for demonstrating what I mean 
</sqlquery> 

<script language="VBScript"> 

statement = connection.execute(sqlquery) 

' more code 


</script> 
</job> 

、それはWSFファイルのXML部分内の変数(この場合は大規模なマルチライン文字列)を格納し、スクリプト内でその変数を使用することは可能でしょうか?

私はこの醜い方法で大きなマルチライン文字列をvbscriptコード内に格納することを避けようとしています。

文字列を別のファイルに保存して読み込むことができます(私はそうします)が、これが可能かどうかを確認するためにこの質問をしています。

答えて

1

偶然、ActivePerlユーザーガイドトピック「Windowsスクリプトホスト」を読んで<resource>/getResourceが見つかりました。 microsoft.comでthisが見つかりました。私は、CDATAの重要性を示すために、サンプルを変更:

<package> 
<job id="VBS"> 
<resource id="errNonNumeric"> 
<![CDATA[ 
    Error: A non-numeric value was entered where a number was expected. 
     And value <> nice! 
     So we need CDATA 
]]> 
</resource> 
<script language="VBScript"> 

Function getRandomNumber(upperBound) 
    If IsNumeric(upperBound) Then 
     getRandomNumber = CInt(upperBound * Rnd + 1) 
    Else 
     WScript.Echo qq(getResource("errNonNumeric")) 
     WScript.Quit -1 
    End If 
End Function 

Function qq(s):qq=""""&s&"""":End Function 

NewValue = getRandomNumber("Bad Value") 

</script> 
</job> 
</package> 

出力:

cscript 37990815-4.wsf 
" 

    Error: A non-numeric value was entered where a number was expected. 
     And value <> nice! 
     So we need CDATA 

" 

いくつかの作業WRTの空白はまだ必要であると考えられます。


旧バージョン。 rtfmが「あなた自身のロール」を打つことを示し続けました。あなたは

  1. に喜んでいる場合

    の本で「

  2. をあなたのXMLを書く
  3. 各.WSFにMSXML2.DomDocumentを使用して機能を追加し、いくつかの余分な作業WRTの空白
  4. を行います

できます。

デモ:

<?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?> 
<package> 
<job id="main"> 
    <?job error="true" debug="false" ?> 
    <script language="VBScript"> 
    <![CDATA[ 
' ############################################################################ 

Function getXmlData(n) 
    Dim oXDoc : Set oXDoc = CreateObject("MSXML2.DomDocument.6.0") 
    oXDoc.setProperty "SelectionLanguage", "XPath" 
    oXDoc.async = False 
    oXDoc.load WScript.ScriptFullName 
    getXmlData = "shit hits fan" 
    If 0 = oXDoc.ParseError Then 
    Dim ndX : Set ndX = oXDoc.selectSingleNode("/package/job[@id='main']/data/" & n) 
    getXmlData = ndX.text 
    End If 
End Function 
Function qq(s):qq=""""&s&"""":End Function 

WScript.Echo qq(getXmlData("s")) 


' ############################################################################ 
    ]]> 
    </script> 
    <data> 
    <s> 
    pi 
    pa 
    po 
    </s> 
    </data> 
</job> 
<job id="other"> 
    <data><s>wtf</s></data> 
</job> 
</package> 

出力:

cscript 37990815-2.wsf 
"pi 
    pa 
    po" 
関連する問題