javascript - 检查一个文件路径是否存在于另一个文件路径中?
问题描述
假设我有以下 2 个路径名字符串(Windows 环境):
roaming = `C:\Users\User\AppData\Roaming\.minecraft\`
和
bin = `%AppData%\.minecraft\bin`
如何检查有没有办法获得一个布尔值,说它bin
内部是否存在roaming
?bin
嵌套在roaming
注意: fs.exists()、existsSync() 和 access() 都会根据当前目录检查目录。我想在不更改当前目录的情况下检查指定目录
注意 2:替换%AppData%
是一种优雅的解决方案,但我需要一个使用环境进行评估的解决方案,因此它也可以处理诸如 windows 文件夹重定向之类的事情。
示例:假设用户通过 windows 10 上的 electronjs 中的 html 输入给我这个存储库路径(不寻找 windows/electron 特定的答案,只是一个示例)(作为字符串存储在 中repo_var
):
%AppData%\SOME_APPDATA_FOLDER\SOME_REPOSITORY\
假设用户然后给了我这个文件夹(存储为字符串file_var
):
D:\SOME_NETWORK_DRIVE\USER_PROFILES\THIS_USER\AppData\Roaming\SOME_APPDATA_FOLDER\SOME_REPOSITORY\SOME_DIRECTORY\SOME_FILE.SOME_EXTENSION
在此特定客户端%AppData%
上评估为D:\SOME_NETWORK_DRIVE\USER_PROFILES\THIS_USER\AppData\Roaming
PowerShell
我想运行这个:
const { exec } = require( "child_process" );
exec( "git -C " + repo_var + " log --follow -p -- " + file_var )
我想确保 file_var 是存储库(repo_var)中的一个文件,然后在 powershell 中运行该 shell 命令(来自 nodejs)以避免从主机环境运行错误命令(本例中的 POWERSHELL)
解决方案
首先,您应该使用String.raw
这样反斜杠就不会被擦除:
const roaming = String.raw`C:\Users\User\AppData\Roaming`;
const bin = String.raw`%AppData%\.minecraft\bin`;
接下来,您应该使用fs.existsSync
来进行测试:
const fs = require("fs");
if (fs.existsSync(bin.replace(/%AppData%/, roaming)) {
// directory exists
} else {
// directory doesn't exist
}
推荐阅读
- python - 使用 LpVariable.dicts 设置不同的变量类型和范围
- typescript - .Subscribe() 函数接收值但无法进入函数块
- sql - 为什么子查询字段不会过滤 tablix 但主查询字段会过滤?
- jsf - 我的表格仅在两次单击 commandButton 后更新
- swift - Swift 以编程方式添加本地联系人容器
- c++ - 如何将整数向量转换为 2 位十六进制并按顺序添加到 c 字符串?
- javascript - HTTP 请求承诺和并发
- html - x溢出时,子div的背景不会水平填充父div
- typescript - 单身人士在自己的文件中时的问题
- javascript - 如何通过javascript在HTML表格中追加大数据而不会使浏览器崩溃