2016-07-24 6 views
1

여기에 드문 AppleScript 사용자가 있기 때문에 매우 기본적인 스크립트 일 수 있지만 매우 간단한 스크립트로 새 별칭 파일을 만들 수 없습니다. 다음은 스크립트의 전체 내용입니다.별칭 스크립트가 실패합니다.

set source_file to "/path/to/test.txt" 
set alias_file to "/path/to/test.txt alias" 
tell application "Finder" to make new alias at alias_file to source_file 

나는 "new"를 사용하거나 사용하지 않고 시험해 보았습니다. 필자는 파일 이름 앞에 "POSIX 파일"을 사용하고 파일 이름 뒤에 강제로 "POSIX 파일로"시도했습니다. 나는 "at * to *"와 "to * at *"을 시도했다. 방금 목적지가 포함 된 폴더가 될 필요가있는 경우를 대비해 시도했습니다. 모든 유사 콘텐츠에 동일한 오류 메시지가 표시됩니다.

execution error: Finder got an error: AppleEvent handler failed. (-10000) 

나는 많은 것을 말하지 않습니다.

분명히 실제 파일 경로를 "/ path/to /"로 바꿨지 만 ls /path/to/test.txt은 원본 경로가 유효하다는 것을 확인하고 ls "/path/to/test.txt alias"은 대상 경로가 존재하지 않음을 확인합니다.

중요한 경우, Mac OS X 10.11.5를 실행하고 있습니다.

내가 정말로 원하는 무엇
make v : Make a new element make 

new type : the class of the new element 

at location specifier : the location at which to insert the element 

[to specifier] : when creating an alias file, the original 
    item to create an alias to or when creating a file viewer window, 
    the target of the window 

[with properties record] : the initial values for the properties of 
    the element → specifier : to the new object(s) 

명령 줄에서 osascript와 내가 정말, 정말 원하는 이것을 실행 : 그것은해야처럼 메이크업에 대한 Finder.sdef 항목은 반드시 내가 원하는 것을 보인다 할 일은 파이썬에서 osascript 한 줄 짜기를 호출하므로 파일 경로는 변수가 아닌 인라인이됩니다. 하지만 먼저 명령 줄로 이동 한 다음 스크립트 편집기로 옮겼습니다. 작동하지 못했고이 코드 조각을 호출하는 모든 단일 메서드가 동일한 오류 메시지를 생성합니다. 그래서 잘하면 스크립트가 작동하면 파이썬에서 osascript와 동등한 코드를 호출 할 수있을 것입니다. :}

답변

2

AppleScript represents file paths differently than POSIX does (본질적으로 슬래시 대신 콜론) 이후로 올바른 길을 가고 있었습니까?

수동으로 모든 경로를 AppleScript 경로로 변환 할 수는 있지만 파일 전송은 파일 경로를 읽기 쉽도록 유지하는 더 좋은 해결책입니다 (그리고 실제로 파일을 소스 코드로 읽는 것을 명확히합니다 경로).

그러나 POSIX file의 문제점은 make new alias 명령이 찾고있는 텍스트 경로 대신 파일 참조를 반환한다는 것입니다.

set source_file to (POSIX file "/path/to/test.txt") as text 
set alias_file to (POSIX file "/path/to/test.txt alias") as text 
tell application "Finder" to make new alias at alias_file to source_file 

하지만, 또 하나의 문제가있다 : 다음 make new alias at x to y 명령은 파일 x의 경로로 y을 기대하고이 문제를 해결하려면, 당신이해야 할 alias 행복을 만들기 위해 text로 반환 된 파일 참조를 캐스팅 별칭을 배치해야하는 디렉토리의 경로가 되겠지만 xy의 파일 경로를 전달하고 있습니다. 대상 ("at") 경로는 /path/to/이어야합니다. make new alias 명령은 자동으로 별칭 {original filename} alias의 이름을 지정합니다. 그래서, 요약의 :

되었을 수도 있습니다
set source_file to (POSIX file "/path/to/test.txt") as text 
set alias_dir to (POSIX file "/path/to/") as text 
tell application "Finder" to make new alias at alias_dir to source_file 

조금 장황한,하지만 난 그게 도움이되기를 바랍니다!

+1

엄청난 도움이되었습니다. 고침과 그 이유 모두. 고맙습니다! – larryy

+0

@larryy 멋지다! 다행히 도울 수있어. – AstroCB

+1

수정 사항 : 1. 콜론으로 구분 된 HFS 경로는 이전 OSX 이전 숙취입니다.AS는 이전 버전과의 호환성 (cos AS devs is lazy)을 지원하며 표준 POSIX 경로도 지원합니다. 2. Finder는 _object 지정자를 기대합니다 (예 : home "Documents"폴더의'file "test.txt"). 그러나 HFS 경로 문자열을 사용할 수 있습니다 (파인더는 이전 OSX 숙취 이전이었습니다) 또는 별칭 /'POSIX 파일 '지정자와 변환; 'get'과'set'은 예외입니다. 3. HFS 경로는 근본적으로 결함이 있습니다. 즉, 동일한 이름의 볼륨을 구별 할 수 없으므로 항상 POSIX 경로를 사용하십시오. – foo

관련 문제