Tera Term 매크로에 걸려 넘어지다

ttpmacro.exe 매개 변수의 .ttl 파일 이름
매개변수ttpmacro.exe인 파일 이름은 실제로 절대 경로로 지정해야 합니다.
명령줄 도움말
파일 이름이 절대 경로가 아닐 때 ttpmacro를 사용하십시오.exe에서 온 상대적인 경로로 여겨집니다.
그렇지만
  • .ttl에서ttpmacro.exe
  • 매크로 파일은 C:\Program Files (x86)\teraterm\
  • 에 있음
    상대 경로는 다음과 같습니다.C:\Users\Username\Documents그렇다면 처음부터 패스를 해야 한다.
    Tera Term의 거시적 활용 입문(2)에도
    이 예에서ttpmacro.처리할 파일의 이름을 exe의 매개 변수로 제시했습니다.
    ...
    또한 매개 변수로서 파일의 전체 경로를 제공해야 한다는 것을 주의하십시오...\..\Users\Username\Documents 지령도 귀신
    checkdiskfree.ttl
    hostname = 'localhost'
    promptpattern = '\$ $'
    commandline = 'df -h'
    
    getspecialfolder mydocuments 'MyDocuments'
    
    passwordfile = mydocuments
    strconcat passwordfile '\Scripts\ttpassword.dat'
    
    getpassword passwordfile 'username' username
    getpassword passwordfile 'password' password
    
    msg = hostname
    strconcat msg ':22 /auth=password /user='
    strconcat msg username
    strconcat msg ' /passwd='
    strconcat msg password
    
    connect msg
    
    waitregex promptpattern
    
    sendln commandline
    setsync 1
    recvln  ; the commandline itself
    
    strdim replies 64
    recvln  ; the header of the df's output
    i = 0
    do
      replies[i] = inputstr
      recvln
      ; ...
      ; some processing of the output except the header
      ; ...
      strmatch inputstr promptpattern
      i = i + 1
    loop until result
    
    setsync 0
    
    msg = ''
    for j 0 i
      strconcat msg replies[j]
      strconcat msg #13#10  ; \r\n
    next
    
    messagebox msg 'Output'
    
    이런 느낌의 매크로를 수행하면...

    이 상태에서 마지막 줄recvln의 실행을 중지합니다.
    나는 불평을 많이 해서 마침내 찾았다여기.. 이해했다.
    waitregex에서 기다리는 것이 아니라recvln에서 기다리는 것입니다
    실제로 위에 멈춰 있는 터미널에서 오락을 하면 후속으로 실행된다.messagebox 명령은 행 코드 교체 없이 기다립니다.힌트의 끝에는 확실히 줄 바꾸기가 없다.
    따라서 위의 매크로는 다음과 같이 수정되었습니다.
    checkdiskfree.ttl
    hostname = 'localhost'
    promptpattern = '\$ $'
    commandline = 'df -h ; echo $?'
    
    getspecialfolder mydocuments 'MyDocuments'
    
    passwordfile = mydocuments
    strconcat passwordfile '\Scripts\ttpassword.dat'
    
    getpassword passwordfile 'username' username
    getpassword passwordfile 'password' password
    
    msg = hostname
    strconcat msg ':22 /auth=password /user='
    strconcat msg username
    strconcat msg ' /passwd='
    strconcat msg password
    
    connect msg
    
    waitregex promptpattern
    
    sendln commandline
    setsync 1
    recvln  ; the commandline itself
    
    strdim replies 64
    recvln  ; the header of the df's output
    i = 0
    do
      replies[i] = inputstr
      recvln
      ; ...
      ; some processing of the output except the header
      ; ...
      strmatch inputstr '^\d+$'  ; the output of "echo $?"
      i = i + 1
    loop until result
    
    setsync 0
    
    msg = ''
    for j 0 i
      strconcat msg replies[j]
      strconcat msg #13#10  ; \r\n
    next
    
    messagebox msg 'Output'
    
    실행할 명령은 recvln이지만 꼬리(다음 프롬프트의 앞줄)로 명령 출력에 포함되지 않은 명령만 선택합니다.여기에 명령의 종료 상태df -h를 설정하면 loop until result로 널리 사용될 수 있습니다.
    논리 연산자 비단거리 평가
    논리적 연산자str2 int exitstatus inputstr와 논리적 연산자 & & & 아니단락 평가1.식의 진위가 왼쪽에서 정해져도 오른쪽으로 평가된다는 것이다.
    short-circuit_evaluation_test.ttl
    intdim a 1
    
    n = 1
    a[0] = 7
    
    p = n < 1 && a[n - 1]  ; p = 0
    messagebox p param1
    p = n < 1 && a[n]  ; Index out of range
    
    p = n > 0 || a[n - 1]  ; p = 1
    messagebox p param1
    p = n > 0 || a[n]  ; Index out of range
    
    Visual Basic의 논리 연산자도 마찬가지입니다. 

    좋은 웹페이지 즐겨찾기