ファイル操作¶
save¶
書式¶
$(save ファイル名 エントリ名1 ... )
戻り値¶
なし
解説¶
ファイルにエントリ内容を華和梨辞書形式でセーブする。指定ファイルの以前の内容は消去し、指定エントリ群の内容でファイルを上書きする。
Phase 9.0.0以降、出力の文字コードはUTF-8(BOMあり)である。Phase 8.2.9以前はShift_JISで出力していた。
使用例¶
=kis
save dict-flag.txt flag1 flag2 flag3;
# flag1、flag2、flag3エントリをdict-flag.txtに保存
=end
savecrypt¶
書式¶
$(savecrypt ファイル名 エントリ名1 ... )
戻り値¶
なし
解説¶
ファイルにエントリ内容を暗号化華和梨辞書形式でセーブする。指定ファイルの以前の内容は消去し、指定エントリ群の内容でファイルを上書きする。
Phase 9.0.0以降、暗号化前の内容はUTF-8(BOMあり)で出力される。このため、savecryptで保存した辞書は、Phase 8.2.9以前の華和梨では正しく読めない。
使用例¶
=kis
savecrypt dict-flag.txt flag1 flag2 flag3;
# flag1、flag2、flag3エントリをdict-flag.txtに暗号化して保存
=end
load¶
書式¶
$(load ファイル名)
戻り値¶
なし
解説¶
華和梨辞書形式ファイルを読み込む。暗号化辞書も可。ファイル名の先頭が「/」「\」またはドライブ名から始まる場合には絶対パスとみなし、それ以外の場合にはゴーストのディレクトリからの相対パスとみなす。
Phase 9.0.0以降、ファイルの文字コードは自動判定される。先頭にUTF-8のBOMがあるか、ファイル全体がUTF-8として正当ならUTF-8、そうでなければShift_JIS(CP932)として読む(従来のShift_JIS辞書はそのまま読める)。暗号化行(!KAWA0000、!KAWA0001)は、ファイルにBOMがあれば復号結果をUTF-8、なければShift_JISとして読む。
使用例¶
=kis
load dict-flag.txt;
# dict-flag.txtを読み込む
=end
textload¶
書式¶
$(textload エントリ1 テキストファイル1)
戻り値¶
なし
解説¶
テキストファイル1の内容を読み込む。
ファイルの1行目はエントリ1の一つ目の単語、2行目はエントリ1の二つ目の単語となる。行末の改行コードは、削除してからエントリに格納する。
Phase 9.0.0以降、ファイルの文字コード(UTF-8またはShift_JIS)は自動判定される。
使用例¶
=kis
textload poem mypoem.txt;
# poemエントリにファイル'mypoem.txt'を読み込む
echo \0$(set @i 0 ; loop $(size poem) $(get poem[${@i}] ; inc @i))\e;
# ファイルmypoem.txtの内容を読み込み、さくら側バルーンで内容を表示する
=end
textappend¶
書式¶
$(textappend ファイル名 エントリ1 [エントリ2..])
戻り値¶
なし
解説¶
エントリ1、エントリ2…の全ての内容を、テキストファイル1に追記する。セキュリティの観点から、書き出すファイル名は相対パスのみである。エントリの内容は、添え字順に評価してその結果を書き出す。ファイルに書き出す際、添え字ごとに最後に改行する。textsaveとの違いは、テキストファイル1の以前の内容が残る点である。
Phase 9.0.0以降、追記する内容はUTF-8(BOMなし)で書き出される。既存のファイルがShift_JISであっても、UTF-8で追記される(1つのファイル内に文字コードが混在するので注意)。
使用例¶
=kis
textappend highscore.dat 新タイトル保持者名;
# highscore.datに、「新タイトル保持者名」エントリの内容を追記
=end
textsave¶
書式¶
$(textsave ファイル名 エントリ1 [エントリ2..])
戻り値¶
なし
解説¶
エントリ1、エントリ2…の全ての内容を、テキストファイル1に書き出す。セキュリティの観点から、書き出すファイル名は相対パスのみである。エントリの内容は、添え字順に評価してその結果を書き出す。ファイルに書き出す際、添え字ごとに最後に改行する。textappendとの違いは、テキストファイル1の以前の内容が残らない点である。
Phase 9.0.0以降、内容はUTF-8(BOMなし)で書き出される。Phase 8.2.9以前はShift_JISで書き出していた。
使用例¶
=kis
textsave highscore.dat タイトル保持者名一覧;
# highscore.datに、「タイトル保持者名一覧」エントリの内容を保存
=end
textload_charset¶
書式¶
$(textload_charset エントリ1 テキストファイル1 文字コード)
戻り値¶
なし
解説¶
textloadと同じだが、テキストファイル1の文字コードを指定して読み込む。
文字コードには次の名前を指定できる(大文字小文字は区別しない)。
| 文字コード | 説明 |
|---|---|
Shift_JIS |
Shift_JIS(CP932)。SJIS、CP932も可 |
UTF-8 |
UTF-8。BOMがあれば取り除く |
EUC-JP |
EUC-JP |
ISO-2022-JP |
ISO-2022-JP(JIS)。JISも可 |
EUC-KR |
EUC-KR(Windowsでは949) |
GB2312 |
GB2312(Windowsでは936。GBKも可) |
auto |
UTF-8またはShift_JISを自動判定(textloadと同じ) |
未知の文字コードを指定したときや、実行環境が対応していない文字コードのときは、エラーになりエントリ1は変更されない。
使用例¶
=kis
textload_charset poem mypoem.txt EUC-JP;
# poemエントリにEUC-JPのファイル'mypoem.txt'を読み込む
=end
textappend_charset¶
書式¶
$(textappend_charset ファイル名 文字コード エントリ1 [エントリ2..])
戻り値¶
なし
解説¶
textappendと同じだが、追記する文字コードを指定する。それ以外はtextsave_charsetと同じ。既存のファイルの文字コードとは無関係に指定の文字コードで追記するので、異なる文字コードを指定すると1つのファイル内に文字コードが混在する。
textsave_charset¶
書式¶
$(textsave_charset ファイル名 文字コード エントリ1 [エントリ2..])
戻り値¶
なし
解説¶
textsaveと同じだが、書き出す文字コードを指定する。文字コードの名前はtextload_charsetと同じ(autoは指定できない)。BOMは付けない。
文字コードに無い文字は「?」になる。未知の文字コードを指定したときや、実行環境が対応していない文字コードのときは、エラーになりテキストファイル1は上書きされない。
使用例¶
=kis
textsave_charset highscore.dat EUC-JP タイトル保持者名一覧;
# highscore.datに、「タイトル保持者名一覧」エントリの内容をEUC-JPで保存
=end
readdir¶
書式¶
$(readdir エントリ1 ディレクトリ)
戻り値¶
なし
解説¶
指定ディレクトリに含まれるファイル・ディレクトリ名をエントリ1に保存する。エントリ1の以前の内容は消去される。
ディレクトリ名は相対パスも可。カレントディレクトリの'.'、親ディレクトリの'..'は予め削除される。
使用例¶
=kis
readdir shell "..\..\shell";
# 自ゴーストで使用できるシェル一覧をshellに保存
=end
cncpath¶
書式¶
$(cncpath パス名)
$(cncpath パス名 ファイル名)
戻り値¶
正規化したパス名
解説¶
パス区切り記号に'/'と'\'が混在したパス名を、実装したファイルシステムで適切なパス区切り記号に変換して返す。ファイル名も指定した場合、パスと適切な形で結合して、同じように適切なパス区切り記号で返す。パスとして解釈できない場合、何も返さない。
使用例¶
=kis
# ここではMS Windows上のオリジナル華和梨を想定している
# "..\..\unix"が返る
cncpath ../../unix;
# "C:\WINDOWS\SYSTEM"が返る
cncpath C:/WINDOWS\SYSTEM
# "..\..\UNIX\LS.EXE"が返る
cncpath ../../UNIX/ LS.EXE
=end
dirname¶
書式¶
$(dirname パス名)
戻り値¶
正規化したディレクトリ名
解説¶
与えられたパス名をcncpathで正規化し、ディレクトリ名部分を抽出して返す。
使用例¶
=kis
# ここではMS Windows上のオリジナル華和梨を想定している
# "C:\Program Files\Microsoft Office\Office"が返る
dirname "C:/Program Files/Microsoft Office/Office/POWERPNT.EXE"
=end
filename¶
書式¶
$(filename パス名)
戻り値¶
ファイル名
解説¶
与えられたパス名をcncpathで正規化し、ファイル名部分を抽出して返す。
使用例¶
=kis
# ここではMS Windows上のオリジナル華和梨を想定している
# "POWERPNT.EXE"が返る
filename "C:/Program Files/Microsoft Office/Office/POWERPNT.EXE"
=end
isexist¶
書式¶
$(isexist パス名)
戻り値¶
パスが存在すれば真、そうでなければ偽
解説¶
与えられたパス名が存在するかどうか判定する。パスが存在すれば真、そうでなければ偽を返す。
使用例¶
=kis
# MATERIAのghost\masterフォルダで実行した場合を想定
isexist $(cncpath profile);
# 1が返る
isexist shiori.dll;
# 1が返る
isexist $(cncpath ..\..\..\..\embryo.exe);
# ""が返る
=end
isdir¶
書式¶
$(isdir パス名)
戻り値¶
パスがディレクトリならば真、そうでなければ偽
解説¶
与えられたパス名がディレクトリかどうか判定する。パスがディレクトリならば真、そうでなければ偽を返す。パスのファイルが存在しない場合の動作は不定である。
使用例¶
=kis
# MATERIAのghost\masterフォルダで実行した場合を想定
isdir $(cncpath profile);
# 1が返る
isdir shiori.dll;
# ""が返る
=end
isfile¶
書式¶
$(isfile パス名)
戻り値¶
パスが通常ファイルならば真、そうでなければ偽
解説¶
与えられたパス名が通常ファイルかどうか判定する。パスが通常ファイルならば真、そうでなければ偽を返す。パスのファイルが存在しない場合の動作は不定である。
使用例¶
=kis
# MATERIAのghost\masterフォルダで実行した場合を想定
isfile $(cncpath profile);
# ""が返る
isfile shiori.dll;
# 1が返る
=end