Tera Term 매크로에 걸려 넘어지다
4596 단어 TeraTerm 매크로TeraTermMacro
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의 논리 연산자도 마찬가지입니다. ↩ Reference
이 문제에 관하여(Tera Term 매크로에 걸려 넘어지다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ktrarai/items/b4950e2c8086db3ae64d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)