2013-07-19 5 views
0

"123 - Test - English.pdf"형식의 pdf 파일 목록이 있습니다. 저는 자신의 개별 변수에 "111", "Test"및 "English.pdf"를 설정할 수 있기를 원합니다. 아래 코드를 실행 해 보았지만 여러 대시가 있다고 생각하지 않습니다. "-". 어떻게해야합니까? 미리 감사드립니다. 이 오타 인 경우파일 이름의 특정 영역 저장하기

Loop,C:\My Documents\Notes\*.pdf, 0, 0 
    { 
    NewVariable = Trim(Substr(A_LoopFileName,1, Instr(A_LoopFileName, "-")-1)) 

답변

1

변수를 얻으려면 구문 분석 루프를 사용하는 것이 좋습니다. 다음은 대시 사이의 값을 반복하고 공백을 제거합니다.

FileName = Test - file - name.pdf 
Loop, parse, FileName, `- 
    MyVar%A_Index% := RegExReplace(A_LoopField, A_Space, "") 

msgbox % Myvar1 "`n" Myvar2 "`n" MyVar3 
1

첫째, 나도 몰라,하지만 당신은 루프 문 아래 {를 사용하는 경우, 당신은 또한 닫을 필요가있다. 다음 문장이 한 줄이면, 대괄호는 필요 없습니다.

두 번째로 =을 사용하면 코드가 바로 그 코드 텍스트로 출력됩니다. 이 초래 올바르게 코딩 경우 :=

셋째, 현재의 코드를 사용해야합니다

somepdffile.pd 

이 대시없이 PDF 파일을 발견합니다. Instr()은 대시 위치를 반환합니다. 대시가없는 경우 0을 반환합니다.이 경우 substr() 문에 0이 추가되고 -1에는 최대 -1이 더 해지고 substr()과 함께 음수를 사용하면 문자열 대신에 시작 - 당신의 끈이 끊어지는 이유.

Loop, C:\My Documents\Notes\*.pdf, 0, 0 
{ 
    ;look at the docs (http://www.autohotkey.com/docs/) for `substr` 
} 

코드가 작동하지 않는 이유에 대한 설명이 있습니다. 원하는 것을 할 수있게하려면 NewVariable을 어떻게 보이는지 좀 더 설명 할 수 있습니까?

0
; here is another way (via RegExMatch) 
src:="123 - Test - English.pdf", pat:="[^\s|-]+" 
While, mPos:=RegExMatch(src, pat, match, mPos ? mPos+StrLen(match):1) 
    match%A_Index%:=match 
MsgBox, 262144, % "result", % match1 ", "match2 ", "match3 
관련 문제