87

このスクリプトを「test.vbs」に保存しました。

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.OpenTextFile(workFolder &"\test.txt", 2, True)
File.Write "testing"
File.Close
Set File = Nothing
Set FSO = Nothing
Set workFolder = Nothing

スクリプトを実行するときに、「workFolder」変数の値を渡したいと思います。

これどうやってするの?私はそれを行うことができますか?「cscript test.vbs workFolder:'C:\temp\'」のようなものでしょうか?

おまけの質問: 渡された変数を "Set workFolder = Nothing" でクリーンアップする必要がありますか、それとも VBSCript は終了時に自動的にそれを行いますか? 「Set File = Nothing」と「Set FSO = Nothing」も不要でしょうか? この二つの問題の答えが分かる方教えてください。

4

5 に答える 5

142

を使用WScript.Argumentsして、スクリプトに渡された引数にアクセスできます。

スクリプトの呼び出し:

cscript.exe test.vbs "C:\temp\"

スクリプト内:

Set File = FSO.OpenTextFile(WScript.Arguments(0) &"\test.txt", 2, True)

実際にスクリプトに引数が渡されているかどうかを確認することを忘れないでください。Countこれを行うには、プロパティを確認します。

if WScript.Arguments.Count = 0 then
    WScript.Echo "Missing parameters"
end if

ファイルを閉じた後にスクリプトが終了した場合は、変数を に設定する必要はありませんNothing。cscript.exe プロセスが終了すると、リソースは自動的にクリーンアップされます。変数をNothing通常に設定する必要があるのは、スクリプトの実行中に明示的にリソースを解放したい場合のみです。その場合、COM オブジェクトへの参照を含む変数を に設定するとNothing、スクリプトが終了する前に COM オブジェクトが解放されます。これはおまけの質問に対する簡単な回答です。詳細については、次の関連する質問を参照してください。

VBA関数内でオブジェクトをNothingに設定する必要はありますか?

VB6 で変数を「Nothing」に設定する必要があるのはいつですか?

于 2010-05-10T21:56:07.713 に答える
23

VBSの内部では、次の方法でパラメーターにアクセスできます

Wscript.Arguments(0)
Wscript.Arguments(1)

等々。パラメータの数:

Wscript.Arguments.Count
于 2010-05-10T21:58:08.013 に答える
6

コマンド ライン経由で渡された各引数には、次のようにアクセスできます。

したがって、コードでは次のようにすることができます。

strFolder = Wscript.Arguments.Item(0) 

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.OpenTextFile(strFolder, 2, True)
File.Write "testing"
File.Close
Set File = Nothing
Set FSO = Nothing
Set workFolder = Nothing

wscript.arguments.count を使用すると、誰かが適切な値を入力しなかった場合などにエラー トラップを実行できます。

MS Technet の例

于 2010-05-10T21:56:31.307 に答える