2013-03-20 3 views
1

하나의 스크립트로 여러 대의 컴퓨터에 분산 작업 부하를 분산 시키길 원합니다. 워크로드를 배포하기 위해 작업 라벨의 절반을 하나의 파일에 넣었고 나머지 절반은 다른 파일에있는 작업을 Google 드라이브가있는 컴퓨터에 배포했습니다 (다른 파일 이름이 필요한 이유입니다). 그래서 C : \, Google 드라이브 \ task1.txt 및 C : 같은 \하며, Google \ task2.txtautohotkey 와일드 카드 읽기 루프

AutoHotkey를 명령 같습니다, 그것을 읽으려고 보인다

loop, read, c:\googledrive\task*.txt 

하지만 그 대신 읽기 task1.txt의 " task * .txt "를 리터럴 파일 이름으로 사용하면 실패하고 루프가 종료됩니다.

아이디어가 있으십니까? 감사.

OK, 모든 권한이 관리자 권한으로 실행되고 있는지 확인하고 파일이 존재하는지 (존재하는지) 확인하고 파일 경로에 오타가 없는지 확인하십시오. 아직도 실제로 파일을 읽지 않을 것입니다.

가 나는 파일 이름의 원래의 게시물 부분에 포함되지 않은 하나의 비트가 실제로 변수이기 때문에, 루프 명령이 실제로 좋아 : 난 그냥 그 비트를 생각

loop, read, c:\googledrive\%task%*.txt 

하찮은했다 .

각 컴퓨터마다 다른 스크립트를 저장하면 와일드 카드를 실제 비트로 바꾸고 작동시킬 수 있습니다.

은 그래서 ... 임 그냥 파일에있는 컴퓨터의 이름으로 각 파일 이름을 지정하고에 명령을 변경하려고 : .... 내가 이런 식으로 할

loop, read, c:\googledrive\%task%%A_ComputerName%.txt 
+0

내 컴퓨터에서 작동합니다. 파일이 없거나 스크립트가 관리자 권한으로 실행되지 않았으며 관리자 권한이 필요한 폴더에 액세스해야합니다. –

+0

감사합니다. 폴더 권한을 조사하여 문제가 해결되는지 확인하십시오. – user2124918

+0

와일드 카드로 왜 저에게 효과가 없을지 모르지만 파일 이름에 컴퓨터 이름 변수를 사용하면 문제가 해결되고 실제로 전체 프로세스가 1 ~ 2 단계로 단순화됩니다. – user2124918

답변

1

Loop, C:\Temp\Source\*.txt ; Lists the next file as A_LoopFileName 
{ 
    Loop, read, C:\Temp\Source\%A_LoopFileName% ; process current file 
    { 
     IfInString, A_LoopReadLine, abc 
     { 
     ....... 
     } 
    } 
}