1

C# では、「\」で終わるパスを次のように解析します: -p "C:\My Folder\"。問題は、解析時に C:\My Folder だけでなく、C:\My Folder" (最後の引用符付き) を取得することです。この問題を回避する方法はありますか? CommandLineParser と NDesk.Options で既に試しました、両方とも同じ問題で終わりました...

オプション クラス:

    class Options
{
    [Option('p', "path", Required = false)]
    public string parsedPath { get; set; }

    [Option('f', "file", Required = false)]
    public string parsedFile { get; set; }

    [Option('l', "label", Required = false)]
    public string parsedLabel { get; set; }

    [Option('t', "torrent", DefaultValue = false)]
    public bool isTorrent { get; set; }
}

コードの実装:

var options = new Options();
CommandLine.Parser parser = new CommandLine.Parser();
parser.ParseArguments(args, options);

編集: Command Line Parser Libraryライブラリを使用しています

4

1 に答える 1

0

バックスラッシュをエスケープする必要があります。 -p "C:\My Folder\\"

TL;DR

M ( \M) をエスケープしてもエスケープされませんが、引用符 ( \") をエスケープするとエスケープされます。残念ながら、引用符をエスケープして文字列の一部にしようとして ( C:\My Folder") が生成されました。なぜこれが起こるのかは完全に理解できますが、少し直感的ではありません。
私は同じものに出くわしましたが、反対方向からです。私のパラメータはだっ-myPath C:\what ever\ --verboseたが、その結果、MyPathはC:\what. だから私は引用符を追加し-myPath "C:\what ever\" --verbose、 MyPath になりましC:\what ever" --verboseた。

于 2022-01-08T21:35:01.373 に答える