2016-10-24 11 views
3

私は設定ファイルからファイルパスを読み込み、そのディレクトリから読み込もうとしています。何らかの理由でchange-dirが決して絶対パスにならないので、私はそれを動作させる方法を見つけることができません。ここでは、CLIで動作させようとしている私の筆跡があります。Rebol2:絶対ファイルパスへの変更-dirが動作しない

>> 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:

test: %/c/users/thompson/downloads 

を次に、単にあなたのプログラムの中からこれを行うことができます。

自動的に移入されます
>> do %test.cfg 

ファイルパスを '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:] 

Linuxの道

あなたはいつも %/C/Users/thompson/Downloads/

を取得します
test: "test: /C/Users/thompson/Downloads/" 
to-file trim find/tail test "test:" 

、Windowsの道

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

関連する問題