# SplitPath

将一个文件名或 URL (统一资源定位符)分解成它的名称、目录、扩展名和驱动器。

SplitPath, InputVar [, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive]

#### 参数

InputVar | 包含用来被分析的文件名的变量名称。
OutFileName | 储存不带路径的文件名的变量名称。文件的扩展名包括在内。
OutDir | 储存文件的目录，包括驱动器字母或共享名称(如果有的话)的变量名称。最后的反斜线不被包括在内，即使文件定位在一个驱动器的根目录。
OutExtension | 储存文件的扩展名(例如TXT、DOC 或 EXE)的变量名称。圆点不被包括在内。
OutNameNoExt | 储存不带路径、圆点和扩展名的文件名的变量名称。
OutDrive | 储存文件的驱动器字母或服务器名称的变量名称。如果文件在一个本地或映射驱动器，变量将被设为驱动器字母跟一个冒号(无反斜线)。如果文件在一个网络路径(UNC 通用命名规则)，变量将被设为共享名，例如 \\Workstation01

#### 说明

如果相应的信息不需要，任何一个输出变量可被省略。

如果 InputVar 包含一个缺少驱动器字母的文件名(即它不含路径或仅有一个相对路径)，OutDrive 将为空，但所有其他输出变量将设置正确。同样地，如果不存在路径，OutDir 将为空；如果有一个路径但不存在文件名， OutFileName 和 OutNameNoExt 将为空。

在文件系统里实际的文件和目录不通过此命令核查。它简单地分析在 InputVar 里给出的字串。

在文件名里不合法的通配符(* 和 ?) 以及其他字符将与合法字符一样来对待，除了冒号、反斜线和句号(圆点)，是根据它们在划分驱动器字母、目录和文件扩展名的界限性质来处理的。

对 URLs 的支持: 如果 InputVar 包含一个双斜线，例如 http://domain.com 或 ftp://domain.com，OutDir 将设为协议前缀 + 域名 + 目录 (例如 http://domain.com/images)，OutDrive 将设为协议前缀 + 域名 (例如 http://domain.com)。所有其他变量将根据它们上面的定义来设置。

#### 相关命令

A_LoopFileExt, StringSplit, StringGetPos, StringMid, StringTrimLeft, StringLeft, FileSelectFile, FileSelectFolder

#### 范例

    FullFileName = C:\My Documents\Address List.txt

    ;仅从上面取出单单文件名：
    SplitPath, FullFileName, name

    ; 仅取出它的目录：
    SplitPath, FullFileName,, dir

    ; 取出所有信息：
    SplitPath, FullFileName, name, dir, ext, name_no_ext, drive

    ; 上面这行会将变量如下设置：
    ; name = Address List.txt
    ; dir = C:\My Documents
    ; ext = txt
    ; name_no_ext = Address List
    ; drive = C:

翻译：天堂之门 menk33@163.com 2008年7月23日