Last Update : 2007/04/xx
カレントフォルダを変更する命令です。「カレント」(current)は「現在の」という意味の英語です。現在のフォルダ(ディレクトリ)から操作先を別のフォルダに移動します。命令名の由来は「change directory」から。
chdir "フォルダパス文字列"
bload命令、bsave命令、notesave命令、noteload命令、exist命令、delete命令、mkdir命令、mmload命令(sndload命令)などのようなファイルやフォルダの操作関連命令で基点となるフォルダを移動させる時に利用します。
カレントフォルダはdialog命令のタイプ16・17で変動します。HSPスクリプトエディタのデバッグウィンドウで、全般タブの「ディレクトリ」という項目がカレントフォルダのパスです。
・注意!
もし存在しないフォルダを指定したchdir命令を呼ぶと、HSPエラー12「ファイルが見つからないか無効な名前です」でプログラムがそのまま落ちるので、事前にdirlist命令でフォルダの存在を確認する処理を用意しましょう。
たとえば、HSP本体の「hsphelp」フォルダ内に存在するヘルプブラウザ(helpman.exe)を起動する。(以下のスクリプトは、HSP3スクリプトエディタの設定で[全般]ツリー→[ディレクトリ]で[起動時のカレントディレクトリ]が「指定なし」になっているの前提としてます。)
; hsphelpフォルダに操作先を移動 chdir "hsphelp" ; 起動 exec "helpman.exe"
実際のところ、chdir命令を使わないで直指定でも可能です。パスの区切りは「\」ではなく「\\」で指定します。
exec "hsphelp\\helpman.exe"
カレントフォルダをWindowsのデスクトップフォルダに移動して、テキストファイルの出力やフォルダの作成(mkdir命令)を行う。システム変数dir_curやdirinfo関数(モード0)で現在のカレントフォルダのパスや、デスクトップのパスを取得できます。
; デスクトップフォルダに移動 chdir dirinfo(0x10000) buf = "HSPのテストだよ〜ん。" ; テキストファイルの出力 notesel buf notesave "chdir_テスト.txt" ; 新規フォルダの作成 mkdir "chdir_テスト" ; カレントフォルダのパス文字列を表示 mes "done ("+dirinfo(0)+")"
上の階層(「..」と指定)に移動します。HSPスクリプトエディタ上でコンパイル実行した場合、たとえば「C:\Program Files\hsp31」という形でHSPの開発環境をインストールしていたとすると、「C:\Program Files\」にファイルが出力されます。
; 上の階層に移動 chdir ".." buf = "HSPの実験だよ〜ん。" notesel buf notesave "chdir_テスト.txt" mes "done ("+dirinfo(0)+")"
; Cドライブ直下に移動 chdir "C:\\"