2016-08-15 18 views
0

これを達成するために多くのことを試しましたが、私がしたいのはまだ成功していません。 私はチェックボックスからパラメータを収集し、そこにこれらのパラメータを渡すcmdファイルを実行するhtaアプリケーションを持っています。 ログチェックボックスがオンの場合、新しいラッピングファイルを作成せずに、そのプロセスのログファイルを作成したいとします。引数を含むshellExecuteコマンドの出力をVBScriptのログファイルに書き込む

私のロジックは、リダイレクトパラメータを引数として別の引数でスクリプトを実行することです。そして、私は構文の権利を得ることができません(または同じファイル内でも可能です)。私の簡略化したコード:

Sub RunCmd 
dim shell 
dim shellWithLog 
dim command 
dim ARGS 
set shell = createobject("Shell.Application") 
set shellWithLog = createobject("wscript.shell") 

command = "gui.cmd" 


if (checkbox1.checked) then 
ARGS = ARGS + " Do_This" 
end if 

if (checkbox2.checked) then 
ARGS = ARGS + " Do_That" 
end if 
if (logFile.checked) then 
    shellWithLog.run (shell.shellExecute command, ARGS), " &>" + "publishLog.log", 1 
else 
    shell.shellExecute command, , "runas", 1 
end if 
End Sub 

これは明らかに機能しませんが、少なくとも私が達成しようとしていることを示しています。

答えて

1

VBScriptで文字列を連結するには、&演算子が使用されます。 +演算子は数値加算のみです。

Sub RunCmd 
    dim shell, ARGS 

    set shell = createobject("Shell.Application") 
    ARGS = "" 

    if checkbox1.checked then ARGS = ARGS & " Do_This" 
    if checkbox2.checked then ARGS = ARGS & " Do_That" 
    if logFile.checked then ARGS = ARGS & ARGS " > publishLog.log" 

    ' ShellExecute(sFile, [vArgs], [vDirectory], [vOperation], [vShow]) 
    ' https://msdn.microsoft.com/en-us/library/windows/desktop/gg537745(v=vs.85).aspx 

    shell.shellExecute "gui.cmd", ARGS, , "runas", 1 
End Sub 
+0

演算子を修正していただきありがとうございます。以前は+で動作していましたが、 私の場合は、引数としてログを他の引数と一緒にalltogetherを追加すると、空のログファイルになります。これは、cmdファイルにパラメータとして渡され、内部で実行されるためです(実行されたcmdファイルのログが必要です)。 最後に私がやっていることは次のとおりです:execのgui.cmd> htaファイル内のpublishLog.log。そしてgui.cmdには既に必要なパラメータがすべて入っているはずです。 –

+0

わかりません。私の答えは、ログファイルにリダイレクトする方法も示しています。 – Tomalak

+0

はい、そうです。そして私はそれを前に試しました。この方法で空のログファイルを取得します。 –

関連する問題