2016-10-24 2 views
3

구성 파일에서 파일 경로를 읽은 다음 해당 디렉토리에서 읽으려고합니다. 어떤 이유로 든 change-dir이 절대로 절대 파일 경로로 이동하지 않기 때문에 나는 그것을 작동시키는 방법을 찾을 수 없습니다. 다음은 CLI에서 작동하도록하는 내용입니다.Rebol2 : 절대 파일 경로가 변경되지 않습니다.

>> test: pick read/lines %test.ini 1 
== "test: C/Users/thompson/Downloads/" 
>> test: find test " " 
== " C/Users/thompson/Downloads/" 
>> test: next test 
== "C/Users/thompson/Downloads/" 
>> test: to file! test 
== %C/Users/thompson/Downloads/ 
>> change-dir test 
** Access Error: Cannot open /C/rscratch/C/Users/thompson/Downloads/ 
** Near: change-dir test 

답변

1

효과적인 대안을 찾았습니다.

changeDirAbsolute: func [input] [ 
change-dir %/ 
change-dir input 
] 

누구나보다 세련된 해결책을 가지고 있다면 듣는 것이 좋습니다.

1

Rebol에서 코드는 데이터이고 데이터는 코드이므로 Rebol 코드로 .ini 파일을 나타낼 수 있습니다. 덧붙여 말하면, Windows 중심이 아닌 많은 사람들은 .cfg를 이러한 유형의 파일에 대한 확장자로 사용하는 것을 선호합니다. .ini는 "초기화"를 말하며 많은 생각에서 시스템 부팅을 의미하지만 프로그램 시작을 나타낼 수도 있습니다. .cfg는 프로그램의 구성 파일이라는 점에서 조금 더 정확합니다.

test.cfg :

>> do %test.cfg 

자동으로 채워집니다 : 다음

test: %/c/users/thompson/downloads 

, 당신은 단순히 프로그램 내에서이 작업을 수행 할 수와

대신에 이것을 시도했다 'test'라는 단어에 대한 파일 경로.

비 Windows 기반 운영 체제에서 파일 경로는 파일 시스템의 루트 수준을 나타낼 때 /로 시작하는 것이 가장 자주 있습니다. /로 시작하지 않으면 상대 경로 (현재 디렉토리에서 시작)입니다.

도움이 되었기를 바랍니다.

2

REBOL는 절대 경로로

%C/Users/thompson/Downloads/ 

가 표시되지 않기 때문에 실패 것 - 그것은 마법의 선도적 인 슬래시 누락은, 그래서 상대 경로로 볼 수 있습니다. 당신이 확신하는 경우 당신이 최고의 슬래시가없는,

%/C/Users/thompson/Downloads/ 

그래서 쉽게 수정 : 절대 경로는 이것이다

>> test: pick read/lines %test.ini 1 
== "test: C/Users/thompson/Downloads/" 
>> test: find test " " 
== " C/Users/thompson/Downloads/" 
>> test: next test 
== "C/Users/thompson/Downloads/" 
>> test: to file! join "/" test 
2

절대 REBOL 파일 경로를 얻는 방법에는 여러 가지가 있습니다,

REBOL 방법

test: "test: %/C/Users/thompson/Downloads/" 
select load test [test:] 

리눅스 방식

test: "test: /C/Users/thompson/Downloads/" 
to-file trim find/tail test "test:" 

당신은 항상 %/C/Users/thompson/Downloads/

을 얻을 것이다

test: "test: C:/Users/thompson/Downloads/" 
to-rebol-file trim find/tail test "test:" 

윈도우 방법

관련 문제