繁体   English   中英

如何查找给定路径是绝对/相对路径还是将其转换为绝对路径以进行文件操作?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM