ファイルシステム

サポートファイルの検索

AutoLISP関数
(findfile filename)
filename:文字列
指定されたファイルまたはディレクトリをAutoCAD のライブラリパスで検索します。。
戻り値:文字列、または nil
AutoLISP関数
(findtrustedfile filename)
filename:文字列
指定されたファイルまたはディレクトリを AutoCAD の信頼できるファイルパス内で検索します。AutoCAD2014 以降で追加された関数です。
戻り値:文字列、または nil

findfile 関数は、ファイルやディレクトリを検索して存在すれば絶対パスを含んだファイル名を返します。

filename 引数には検索するファイル名を文字列で指定します。

検索するファイル名にパスが含まれていなければ、関数は【サポートファイルの検索パス】内より、指定したファイルやディレクトリを検索します。AutoCAD 2014 以降の場合は、【サポートファイルの検索パス】以外に、【信頼できるファイルパス】内も検索されるようになりました。

findtrustedfile 関数は、findfile 関数と同様の働きを行いますが、【信頼できるファイルパス】内のみを検索します。

【サポートファイルの検索パス】や【信頼できるファイルパス】は、AutoCAD の【オプション】ダイアログの【ファイル】タブで指定されているものです。また、システム変数では【サポートファイルの検索パス】は ACADPREFIX で、【信頼できるファイルパス】は TRUSTEDPATHS で確認できます。

返り値は、見つかった場合は絶対パスを含んだファイル名やディレクトリ名を表す文字列、見つからなければ nil を返します。

_$ (findfile "acad.exe")⏎
"C:¥¥Program Files¥¥Autodesk¥¥AutoCAD 2011¥¥acad.exe"
_$ (findfile "support")⏎
"C:¥¥Program Files¥¥Autodesk¥¥AutoCAD 2011¥¥support"
ACETUTIL関数
(acet-filename-supportpath-remove filename)
filename:文字列
パスがサポートファイルのパスであるときに、パスを除いたファイル名を返します。
戻り値:文字列

acet-filename-supportpath-remove 関数は、与えられたパス情報付きのファイル名が、【サポートファイルの検索パス】であるとき、パスを除いたファイル名を返します。それ以外の時は、そのまま返します。

_$ (findfile "acadinfo.lsp")⏎
"C:¥¥program files¥¥autodesk¥¥autocad 2011¥¥support¥¥acadinfo.lsp"
_$ (acet-filename-supportpath-remove (findfile "acadinfo.lsp"))⏎
"acadinfo.lsp"

ファイルの検索

ACETUTIL関数
(acet-file-dir pattern [attributes] [starting-directory])
pattern:文字列
attribute:整数
starting-directory: 文字列
ファイルやディレクトリを検索します
戻り値:リスト

acet-file-dir 関数は、ディレクトリ内のファイルやディレクトリを検索し、条件に合ったファイルのリストを返します。

検索はワーキングディレクトリを対象に行われるのが基本です。

pattern 引数は、検索するファイル名を表す文字列を指定します。ワイルドカードを使用可能です。例えば、"*" とだけ指定すると、すべてのファイルやディレクトリがリストアップされます。pattern 引数にディレクトリのパスが含まれれば、そのディレクトリを対象に検索が行われます。

_$ (acet-file-dir (strcat (findfile "support") "¥¥*.lsp"))⏎
("C:¥¥Program Files¥¥Autodesk¥¥AutoCAD 2011¥¥support¥¥acad2011.lsp" "C:¥¥Pro...(後略)

attribue 引数が指定された場合は、属性が該当するものだけを検索します。指定する値は以下の値の必要な属性の和をとります。例えば読み取り専用で隠しファイルの場合は、1+2 で 3 を指定します。

整数 定義済みのシンボル
1 Acet:READONLY
2 Acet:HIDDEN
4 Acet:SYSTEM
16 Acet:DIRECTORY
32 Acet:ARCHIVE
_$ (acet-file-dir (strcat (findfile "support") "¥¥*") Acet:DIRECTORY)⏎
("C:¥¥Program Files¥¥Autodesk¥¥AutoCAD 2011¥¥support¥¥Color" "C:¥¥Program F...(後略)

starting-directory 引数が指定された場合は、そのディレクトリを起点にサブディレクトリも含めて検索が行われます。この際、pattern 引数にはディレクトリパスの情報を含めないでください。

_$ (acet-file-dir "*.acb" (findfile "support"))
("C:¥¥Program Files¥¥Autodesk¥¥AutoCAD 2011¥¥support¥¥Color¥¥DIC Color Guide1.acb" "C:¥¥Pr...(後略)

外部 ObjectARX アプリケーションによる関数 EXRXSUBR です。

AutoLISP関数
(vl-directory-files [directory [pattern [directories]]])
directory:文字列
pattern:文字列
directories:整数
指定されたディレクトリ内のファイルをリストします。
戻り値:リスト

vl-directory-files 関数は、ディレクトリ内のファイルやディレクトリを検索し、条件に合ったファイルのリストを返します。

directory 引数が省略された場合は、現在のワーキングディレクトリが対象になります。

ファイルが全く存在しないなど、返すものが存在しない場合は nil (空のリスト)を返します。なお、"." は該当のディレクトリ自身、".." は該当のディレクトリの親ディレクトリを表します。

_$ (vl-directory-files (findfile "support"))⏎
("." ".." "acad2011.lsp" "acadinfo.lsp" "AcCommandWeight.xml" "AcCopyrights.rtf" ...(後略)

pattern には ワイルドカード「*」が使用できます。

_$ (vl-directory-files (findfile "support") "*.map")⏎
("africa.map" "asia.map" "aust.map" "canada.map" "europe.map" "india.map" "namer.map" "samer.map" "world.map")

directories には以下の整数値が指定できます。

directories引数 説明
負の整数 ディレクトリのみをリストします
0 ファイルとディレクトリをリストします(既定)
正の整数 ファイルのみをリストします
_$ (vl-directory-files "support" "w*" 0)⏎		;ファイルとディレクトリ
("WelcomeScreen" "world.map")
_$ (vl-directory-files "support" "w*" 1) ⏎ ;ファイルのみ
("world.map")
_$ (vl-directory-files "support" "w*" -1) ⏎ ;ディレクトリのみ
("WelcomeScreen")
ACETUTIL関数
(acet-file-find-on-path filename pathes)
filename:文字列
pathes: 文字列
指定されたパスから、ファイルを検索します
戻り値:文字列、または nil

acet-file-find-on-path 関数は、与えられたパスからファイルを検索します。

filename 引数は、検索するファイル名を指定します。

pathes 引数は、検索対象のパスを指定します。これは「;」(セミコロン)で区切ることによって、複数のパスを指定することができます。

戻り値は、ファイルが見つかればフルパスを含んだファイル名が、見つかれなければ nil が返ります。

次の例は、システム変数 ACADPREFIX から、【サポートファイルの検索パス】を取得し、ファイルを検索しています。

_$ (acet-file-find-on-path "DIC Color Guide1.acb" (getvar "ACADPREFIX"))⏎
"C:¥¥PROGRAM FILES¥¥AUTODESK¥¥AUTOCAD 2011¥¥SUPPORT¥¥COLOR¥¥DIC Color Guide1.acb"

ファイル情報

AutoLISP関数
(vl-file-size filename)
filename:文字列
ファイルのサイズをバイト単位で返します。
戻り値:整数
AutoLISP関数
(vl-file-systime filename)
filename:文字列
指定されたファイルが最後に更新された日時を返します。
戻り値:リスト

vl-file-size 関数は、ファイルのサイズをバイト単位の整数で返します。

vl-file-systime 関数は、ファイルの最終更新時をリスト形式で返します。リストの並びは以下のような意味となります。

インデックス 説明
0
1
2 曜日(0:日、1:月、2:火、3:水、4:木、5:金、6:土)
3
4
5
6
7 未使用(常に0)

関数の実行例は以下のとおりです。

_$ (setq a (findfile "acad.pat"))⏎
"C:¥¥program files¥¥autodesk¥¥autocad 2011¥¥support¥¥acad.pat"
_$ (vl-file-size a) ⏎
15950 ;15950byte(16KB)
_$ (vl-file-systime a) ⏎
(2009 11 0 22 7 1 37 0) ;2009 年 11 月 日曜日 22 日 7 時 1 分 37 秒
ACETUTIL関数
(acet-file-attr filename [attr])
filename:文字列
attr:整数
ファイル属性を調べたり、設定したりします。
戻り値:整数

acet-file-attr 関数は、ファイル属性を調べたり、設定したりします。

filename 引数は、対象となるファイル名またはディレクトリ名の指定します。

attr 引数を指定した場合は、属性が設定されます。必要な値は、次の属性の和を指定します。例えば読み取り専用で隠しファイルの場合は、1+2 で 3 を指定します。これ以外の値を指定した場合は、その値は無視されます。

整数 定義済みのシンボル
1 Acet:EADONLY
2 Acet:HIDDEN
4 Acet:SYSTEM
16 Acet:DIRECTORY
32 Acet:ARCHIVE

戻り値は、現在の属性、または新しく設定された属性を表す整数が返ります。エラーが発生した場合は、戻り値は -1 となります。

_$ (acet-file-attr "c:¥¥abcd¥¥temp.txt" (+ Acet:READONLY Acet:HIDDEN))⏎
3

既存のファイルの属性を取得してみると、上記以外の値が含まれている時があります。Windows によって付加された属性のようですが、無視しても大丈夫なようです。テストの上、使用してください。

外部 ObjectARX アプリケーションによる関数 EXRXSUBR です。

ファイル名操作

ACETUTIL関数
(acet-filename-valid filename)
filename:文字列
ファイル名が適切かどうか判定します。
戻り値:nil 、または nil 以外

acet-filename-valid 関数は、与えられた文字列がファイル名として適切かどうか判定します。適切であるかというのは、文字列にファイル名やパスとして使用できない文字を含んでいないかです。ファイルの有無には関係しません。

戻り値は、ファイル名として使用できる場合は nil 以外を、使用できない場合は nil を返します。

_$ (acet-filename-valid "acad.pgp")⏎
T
_$ (acet-filename-valid (findfile "acad.pgp"))⏎
T
_$ (acet-filename-valid "sample*.txt")⏎
nil
_$ (acet-filename-valid "sample¥¥.txt")⏎
nil
AutoLISP関数
(vl-filename-base filename)
filename:文字列
ファイル名を返します。ディレクトリパスと拡張子は除去されます。
戻り値:文字列
AutoLISP関数
(vl-filename-directory filename)
filename:文字列
ディレクトリパスを返します。
戻り値:文字列
ACETUTIL関数
(acet-filename-directory filename)
filename:文字列
ディレクトリパスを返します。
戻り値:文字列
AutoLISP関数
(vl-filename-extension filename)
filename:文字列
拡張子を返します。
戻り値:文字列
ACETUTIL関数
(acet-filename-extension filename)
filename:文字列
拡張子を返します。
戻り値:文字列

vl-filename-base 関数、vl-filename-directory 関数、vl-filename-extension 関数、加えて acet-filename-directory 関数と acet-filename-extension 関数は、ファイル名を表す filename 引数の文字列から構成要素を取り出します。

関数の実行例は以下のとおりです。

_$ (setq a (findfile "acad.pat"))⏎
"C:¥¥program files¥¥autodesk¥¥autocad 2011¥¥support¥¥acad.pat"
_$ (vl-filename-base a) ⏎
"acad"
_$ (vl-filename-directory a) ⏎
"C:¥¥program files¥¥autodesk¥¥autocad 2011¥¥support"
_$ (acet-filename-directory a) ⏎
"C:¥¥program files¥¥autodesk¥¥autocad 2011¥¥support¥¥"
_$ (vl-filename-extension a) ⏎
".pat"
_$ (acet-filename-extension a) ⏎ ".pat"
ACETUTIL関数
(acet-filename-path-remove filename)
filename:文字列
パスを除いたファイル名を返します。
戻り値:文字列
ACETUTIL関数
(acet-filename-ext-remove filename)
filename:文字列
拡張子を除いたファイル名を返します。
戻り値:文字列

acet-filename-path-remove 関数と acet-filename-ext-remove 関数は、ファイル名からパスや拡張子を取り除きます。

_$ (setq a (findfile "acad.pat"))⏎
"C:¥¥program files¥¥autodesk¥¥autocad 2011¥¥support¥¥acad.pat"
(acet-filename-path-remove a)⏎
"acad.pat"
(acet-filename-ext-remove a)⏎
"C:¥¥program files¥¥autodesk¥¥autocad 2011¥¥support¥¥acad"

テンポラリファイル名

AutoLISP関数
(vl-filename-mktemp [pattern directory extension])
pattern:文字列
directory:文字列
extension:文字列
テンポラリファイルのファイル名として使用できる一意の名前を作成して返します。
戻り値:文字列

vl-filename-mktemp 関数は、引数からテンポラリファイルに使用できるユニークなファイル名を作成します。

各引数の詳細は以下のとおりです。

引数 説明 未指定の時
pattern ファイル名を表す文字列(最大 5 文字) "$VL"
directory ディレクトリ名を表す文字列 1. pattern で指定されたディレクトリ(指定されている場合)
2. 環境変数 TMP で指定されたディレクトリ
3. 環境変数 TEMP で指定されたディレクトリ
4. 現在のディレクトリ
extension "."(ピリオド)+拡張子を表す文字列 なし

関数の実行例は以下のとおりです。

_$ (vl-filename-mktemp)⏎
"D:¥¥Users¥¥mChair¥¥AppData¥¥Local¥¥Temp¥¥$VL~~001"
_$ (vl-filename-mktemp "AUTOCAD" nil ".TEMP")⏎
"D:¥¥Users¥¥mChair¥¥AppData¥¥Local¥¥Temp¥¥AUTOC002.TEMP"

なお環境変数は以下のように確認できます。

_$ (getenv "TMP")⏎
"D:¥¥Users¥¥mChair¥¥AppData¥¥Local¥¥Temp"