0

vbs スクリプトを作成する必要があります。私はC#の経験しかなく、次のことについての手がかりがないことを認めなければなりません.

  1. ここで、または一般的に「言う」とは何ですか?vbcrlf は、カーソルを新しい行の先頭に置くある種の定数のようですか?

    say(vbcrlf)
    
    say("Some text...")
    
    ws.Run "C:\whatever.exe /PACK-* /SEND /Q", , True
    
    say(vbcrlf)
    
  2. ここで ws.run タスクは何をしますか? scsript.exe を起動して実行するだけですか?

    set ws = CreateObject("Wscript.Shell")
    
    if ucase(right(wscript.fullname,11)) = "WSCRIPT.EXE" then
    
    task = "cscript.exe " & chr(34) & wscript.scriptfullname & chr(34)
    
    ws.run task
    
    wscript.quit
    
    end if
    

それについて何か助けてくれてありがとう!

編集:

問題は、スクリプトが XP では魅力的に動作するが、Win7 では動作しないことです。パス内のスペースと関係があるに違いないと思います。これが私が扱っている正確なパスです。それらを追加の二重引用符で囲む必要がありますか、それとも chr(34) が適していますか?

    ws.Run "C:\Program Files (x86)\whatever.exe /PACK-* /SEND /Q", , True

編集:

わかりました->

    ws.Run """C:\Program Files (x86)\whatever.exe"" /PACK-* /SEND /Q", , True
4

2 に答える 2

1

vbCrLfキャリッジ リターンとラインフィードで構成される定義済みの文字列定数です。

>> WScript.Echo Asc(vbCrLf), Asc(Right(vbCrLf, 1))
>>
13 10

文字列定数を参照してください

sayネイティブの VBScript ではありません。ユーザー定義のサブである必要があります。

>> Sub say(x) : WScript.Echo x : End Sub
>> say "pipapo"
>>
pipapo

(サンプルの param list () はルールに違反しています: Sub を呼び出すときは param list () を使用しないでください)

.RunWScript.Shell オブジェクトのメソッド (関数) です。外部プロセスを実行/実行します。あなたの例では、* w * script.exeの代わりに* c * script.exeホストでスクリプトを再起動するために(サブとして)使用されています。

WshShell オブジェクト.Run メソッドを参照してください。

PS

.Run (または.Exec) を使用する場合、最初の/strCommand パラメーターを変数に組み込み、コマンド プロンプトから検査およびテストすることをお勧めします。「無意味に変数を作成して余分なメモリを使用し、スクリプトを遅くし、スクリプトを読みにくくする」という議論は、情報ストレージが石に取って代わられた直後に時代遅れになりました。

于 2013-11-08T23:45:04.070 に答える
0
'Connects to COM object WScript.Shell
set ws = CreateObject("Wscript.Shell")

'Testing what script engine is running the script, if the GUI one then do the following. wscript object is always available in wscript/cscript run scripts
if ucase(right(wscript.fullname,11)) = "WSCRIPT.EXE" then

'Pointlessly create a variable to use extra memory, slow down the script, and to make script harder to read
task = "cscript.exe " & chr(34) & wscript.scriptfullname & chr(34)

'Run the current script in the console version of the scripting host
ws.run task

'quits the script leaving the console version to run
wscript.quit

end if
于 2013-11-08T23:48:33.180 に答える