#split #quote #windows #words #shell #command-line-arguments

no-std winsplit

将字符串分割成命令行参数的库,类似于 CommandLineToArgV,遵循 VC++ 2008 解析规则

1 个不稳定版本

0.1.0 2022 年 8 月 4 日

命令行界面 中排名第 774

Download history 881/week @ 2024-03-13 1089/week @ 2024-03-20 691/week @ 2024-03-27 792/week @ 2024-04-03 675/week @ 2024-04-10 980/week @ 2024-04-17 1210/week @ 2024-04-24 886/week @ 2024-05-01 766/week @ 2024-05-08 812/week @ 2024-05-15 1151/week @ 2024-05-22 858/week @ 2024-05-29 964/week @ 2024-06-05 1025/week @ 2024-06-12 796/week @ 2024-06-19 825/week @ 2024-06-26

每月下载量 3,671
用于 34 Crates(5 个直接使用)

MIT/Apache

24KB
275

winsplit

Crates.io Docs CI

类似于 shell-words,但为 Windows 设计,某种程度上反映了 CommandLineToArgvW,遵循 VC++ 2008 解析规则。

完全用 Rust 编写,因此可以在任何操作系统上运行!Windows 不是必需的!

最低测试的 Rust 版本是 1.56.1,但可能在更早的版本上编译和运行!

安装

[Dependencies]
winsplit = "0.1"

如果您想在不使用 std 库的情况下使用此库,可以通过禁用 std 功能将其编译为与 alloc 一起使用

[Dependencies]
winsplit = { version = "0.1", default-features = false }

使用方法

let args = winsplit::split(
    r#"C:\ProgramFiles\Example\example.exe --key "some value" arg1 arg2"#
);
assert_eq!(
    args, 
    &[
        r"C:\ProgramFiles\Example\example.exe",
        "--key",
        "some value",
        "arg1",
        "arg2"
    ]
);

解析规则

此库遵循 Visual Studio 2008 中发布的 VC++ 9.9 (msvcr90.dll) 的 2008 年解析规则。有关更多详细信息,请参阅 C/C++ 参数解析规则

您还可以查看此仓库的规则和示例的镜像,请访问 wiki 文档页面

特别感谢

感谢 David Deley 记录 Windows 参数解析逻辑的复杂性,并提供了大量示例,可在 https://daviddeley.com/autohotkey/parameters/parameters.htm 找到。

许可协议

本项目许可协议为以下之一:

Apache 许可协议,版本 2.0(LICENSE-APACHE 或 apache-license)MIT 许可证(LICENSE-MIT 或 mit-license),任选其一。

无运行时依赖