[英]How to find whether a given path is absolute/relative and convert it to absolute for file manipulation?
我正在javascript / jscript中编写一个小的windows脚本,用于查找regexp的匹配项,其中包含通过操作文件获得的字符串。
文件路径可以是相对的或绝对的。 如何查找给定路径是绝对/相对路径还是将其转换为绝对路径以进行文件操作?
如何查找给定路径是绝对的还是相对的...
从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);
要检查路径是相对路径还是绝对路径,请查找前导/
。 如果没有,则需要将路径连接到基本路径。 有些编程环境有一个“当前工作目录”,但是浏览器中的Javascript没有,所以你只需要选择一个基本路径并坚持下去。
function full_path(my_path) {
var base_path = "/home/Sriram/htdocs/media";
var path_regex = /^\/.*$/;
if(path_regex.test(my_path)) {
return my_path;
} else {
return base_path + my_path;
}
}
路径可以包含新行,javascript正则表达式.
将无法匹配,因此您可能希望开发更复杂的正则表达式,以确保所有路径都能正常工作。 但是,我认为这不属于这个答案的范围,而是我的知识。 :-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.