How to determine if a given path is absolute / relative ...
From the MSDN article Naming Files, Paths, and Namespaces :
The file name refers to the current directory if it does not start with one of the following:
- A UNC name of any format that always starts with two backslash characters ("\\"). See the next section for more information.
- The backslash drive designation, for example, "C: \" or "d: \".
- The only backslash, for example, "\ directory" or "\ file.txt". This is also called the absolute path.
So, strictly speaking, an absolute path is one that starts with one backslash ( \ ). You can check this condition as follows:
if (/^\\(?!\\)/.test(path)) { // path is absolute } else { // path isn't absolute }
But often on the absolute path we mean a fully qualified path. In this case, you need to check all three conditions in order to distinguish between full and relative paths. For example, your code might look like this:
function pathIsAbsolute(path) { if ( /^[A-Za-z]:\\/.test(path) ) return true; if ( path.indexOf("\\") == 0 ) return true; return false; }
or (using one regex and slightly less readable):
function pathIsAbsolute(path) { return /^(?:[A-Za-z]:)?\\/.test(path); }
... and convert it to an absolute value for file manipulation?
Use the FileSystemObject.GetAbsolutePathName method:
var fso = new ActiveXObject("Scripting.FileSystemObject"); var full_path = fso.GetAbsolutePathName(path);
Helen source share