是否有一个WinAPI可以从带有可选空格和其他参数的命令行获取文件名
Is there a WinAPI to get filename from a command line with optional spaces and other parameters?
我的目标是从命令行调用/string中获取文件名。例如,如果我在输入上有以下字符串:
C:WINDOWSsystem32mstsc.exe /v:%WKSNAME% /f
"C:UsersUser NameDesktopMy Program.exe" /?
API应分别返回以下内容:
mstsc.exe
My Program.exe
所以我尝试使用splitpath
函数,尽管它适用于一个非常简单的文件路径,但在上面的两个例子中它完全失败了。
我知道我可以编写自己的解析器(所以请不要提供。)我很好奇是否已经有内置的Windows API了?
PS。必须有一个操作系统在内部用来解析这些内容。
PS2.这是我一直在玩的代码:
TCHAR buffFileName[MAX_PATH];
TCHAR buffExt[MAX_PATH];
LPCTSTR strInputPath = L"C:\WINDOWS\system32\mstsc.exe /v:%WKSNAME% /f";
if(_tsplitpath_s(strInputPath, NULL, 0, NULL, 0, buffFileName, MAX_PATH, buffExt, MAX_PATH) == 0)
{
//Got something
}
我相信PathFindFileName
可能是您想要的。来自文档:
在路径中搜索文件名。
文档中的示例似乎显示了您所描述的确切行为。
如果您更愿意解析整个命令行,CommandLineToArgvW
可能会有所帮助。它使用命令行并将其拆分为一个包含文件名和任何参数的数组。
这个函数的解析规则相当复杂,所以一定要仔细查看文档,但在这个答案中可以找到它们的简单解释。
相关文章:
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 如何从其他功能C++访问参数?
- C++ 默认参数使用其他参数
- 如何将将参数包作为参数传递给其他模板类的模板类?
- lambda 作为接受其他参数的参数的初始化顺序
- 如何在其他类中使用参数化构造函数制作类的对象?
- 模板参数包如何具有其他尾随参数?
- 在C++单元测试上下文中,抽象基类是否应将其他抽象基类作为函数参数
- 了解'this'或其他参数是否为右值
- 使用其他模板类型参数作为要在函数签名中使用的类型别名声明
- 推断大多数模板对象的参数,但在调用模板函数时对其他对象显式
- 当模板类使用参数包时,如何传递其他模板参数
- 如何将char数组声明为函数参数?或告诉我此代码中还有其他问题?
- 递归回文检查,不使用向量、大小或其他参数
- 将成员函数作为参数传递给其他成员函数 (C++ 11 <function>)
- 依赖于其他模板参数的模板参数
- 传递多个参数的功能,该函数将类包含到其他函数
- 将指针类方法作为参数传递给其他类方法C
- 如果创建支持返回可变参数类型列表的通用模板 API,我应该使用 std::tuple 还是其他东西?
- 如何根据枚举参数返回其他类型