2016-08-15 1 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 ki.cmd> hta 파일 내의 publishLog.log. gui.cmd에는 이미 필요한 모든 매개 변수가 있습니다. –

+0

이해가 안됩니다. 내 대답은 또한 로그 파일로 리디렉션하는 방법을 보여줍니다. – Tomalak

+0

네, 그렇습니다. 그리고 나는 전에 그것을 시도했습니다. 이렇게하면 빈 로그 파일이 생깁니다. –

관련 문제