2010-06-13 3 views
0

다음 VB 스크립트가 있습니다 이 VB 스크립트를 사례 구문으로 작성하는 방법은 무엇입니까? 그때 전문적인 글쓰기를 수행하기 위해서 .... yaelif endif 그렇다면 다른 스마트 솔루션의 경우

Set fso = CreateObject("Scripting.FileSystemObject") 

If (fso.FileExists("C:\file1 ")) Then 
    Verification=ok 
Else 
    WScript.Echo("file1") 
    Wscript.Quit(100) 
End If 

If (fso.FileExists("C:\file2 ")) Then 
    Verification=ok 
Else 
    WScript.Echo("file2") 
    Wscript.Quit(100) 
End If 


If (fso.FileExists("C:\file3 ")) Then 
    Verification=ok 
Else 
    WScript.Echo("file3") 
    Wscript.Quit(100) 
End If 

. . . .

+0

당신이 할 수있는 방법을 찾을 수 없습니다 :

function TestFile(sFileName) TestFile = fso.FileExists(sFileName) end function sub ErrorExit(sMessage, nCode) WScript.Echo sMessage WScript.Quit nCode end sub 

그런 다음 테스트 당신의 시리즈된다 :

다음, 당신은 코드의 반복 대부분을 줄이기 위해 함수와 서브 루틴의 일까지 포장 할 수 있습니다 유스 케이스? – jmasterx

+2

스위치/케이스는 변수를 여러 값으로 테스트하는 데 사용됩니다. 독립적 인 다른 테스트를하고 있습니다. 여기서는 스위치/케이스가 없습니다. – Eiko

답변

0

이 유형의 경우에는 선택/대소 문자를 사용할 수 없지만 코드를 요약하거나 단순화하는 다른 방법이 있습니다.

첫째, 테스트 조건을 역 :이 후 /하면 다음 "아무것도하지 않는"명령을 필요로 피한다

If Not (fso.FileExists("C:\file1 ")) Then 
    WScript.Echo("file1") 
    Wscript.Quit(100) 
End If 

.

if not TestFile("c:\file1") then 
    ErrorExit "file1 not found", 100 

elseif not TestFile("c:\file2") then 
    ErrorExit "file2 not found", 100 

elseif not TestFile("c:\file3") then 
    ErrorExit "file3 not found", 100 
end if 
0

꽤 많은 코드 줄이 필요할 수도 있지만 간단한 유한 상태 시스템을 구현하여이 작업을 수행 할 수 있습니다. 그런 다음 if/then 구문을 사용하는 대신 switch 문을 사용할 수있는 열거 형 "상태"집합을 사용하게됩니다.

자세한 내용은 FSM http://en.wikipedia.org/wiki/Finite-state_machine이며 열거 형을 사용하여 구현하기 쉽습니다. 및 switch 문.

난 그냥 여기에 C에서 간단한 FSM 구현, 구글의이를 잡고 :

#include <stdio.h> 

main() 
{ 
    int c; 

    START: 
     switch(c = getchar()){ 
      case 'f' : goto F; 
      case 'b' : goto B; 
      case EOF : goto FAIL; 
      default: goto START; } 

    F: 
     switch(c = getchar()){ 
      case 'o' : goto FO; 
      case EOF : goto FAIL; 
      default : goto START;} 

    FO: 
     switch(c = getchar()){ 
      case 'o' : goto SUCCESS; 
      case EOF : goto FAIL; 
      default : goto START;} 

    B: 
     switch(c = getchar()){ 
      case 'a' : goto BA; 
      case EOF : goto FAIL; 
      default : goto START;} 

    BA: 
     switch(c = getchar()){ 
      case 'r' : goto SUCCESS; 
      case EOF : goto FAIL; 
      default : goto START;} 

    FAIL: 
     printf("Does not match.\n"); 
     return; 
    SUCCESS: 
     printf("Matches.\n"); 
     return; 
} 
+0

관련 예제를 제공하십시오 THX – yael

+0

그리고 VB에 아무 것도없는 명령이 있다면? 그 다음에는 여기에 구문을 넣으시겠습니까? THX – yael

4

with VB (또는 VBS)에서 절 또는 다른 언어 switch 등의 대안이 그러나 사람들은 사용이 있습니다 단일 주어진 조건/var에 대해 검사가 이루어 지지만 단일 일 (예 : 복수 파일 이름 C:\file1, C:\file2 등)을 확인할 필요가 없기 때문에이 경우에는 사용할 수 없습니다. AS를

다른 대안

, 당신은 파일 이름에 번호가 코드에서 일관성있는 것으로 보인다 대신하기 때문에 루프를 사용할 수 있습니다
For i 1 To 3 
    If (fso.FileExists("C:\file" & i)) Then 
     Verification = ok 
    Else 
    WScript.Echo("file" & i) 
    Wscript.Quit(100) 
    End If 
Next 

그래서 모두, 위의 코드는 코드의 축약 형이다.

관련 문제