Как определить, является ли данный путь абсолютным / относительным ...
Из статьи MSDN Именование файлов, путей и пространств имен :
Имя файла относится к текущему каталогу, если оно не начинается с одного из следующих:
- UNC-имя любого формата, которое всегда начинается с двух символов обратной косой черты ("\\"). Для получения дополнительной информации см. Следующий раздел.
- Обозначение диска с обратной косой чертой, например "C: \" или "d: \".
- Отдельная обратная косая черта, например, "\ directory" или "\ file.txt". Это также называется абсолютный путь .
Итак, строго говоря, абсолютный путь - это тот, который начинается с одного обратного слеша (\
). Вы можете проверить это условие следующим образом:
if (/^\\(?!\\)/.test(path)) {
// path is absolute
}
else {
// path isn't absolute
}
Но часто под абсолютным путем мы на самом деле подразумеваем полностью определенный путь . В этом случае вам необходимо проверить все три условия, чтобы различать полный и относительный пути. Например, ваш код может выглядеть так:
function pathIsAbsolute(path)
{
if ( /^[A-Za-z]:\\/.test(path) ) return true;
if ( path.indexOf("\\") == 0 ) return true;
return false;
}
или (с использованием одного регулярного выражения и чуть менее читаемого):
function pathIsAbsolute(path)
{
return /^(?:[A-Za-z]:)?\\/.test(path);
}
<Ч />
... и преобразовать его в абсолютное значение для манипулирования файлами?
Используйте метод FileSystemObject.GetAbsolutePathName
:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var full_path = fso.GetAbsolutePathName(path);