一尘不染

在C#中传递命令行参数

c#

我正在尝试将命令行参数传递给C#应用程序,但是传递类似这样的内容时遇到问题

"C:\Documents and Settings\All Users\Start Menu\Programs\App name"

即使我增加" "了论点。

这是我的代码:

    public ObjectModel(String[] args)
    {
        if (args.Length == 0) return; //no command line arg.
        //System.Windows.Forms.MessageBox.Show(args.Length.ToString());
        //System.Windows.Forms.MessageBox.Show(args[0]);
        //System.Windows.Forms.MessageBox.Show(args[1]);
        //System.Windows.Forms.MessageBox.Show(args[2]);
        //System.Windows.Forms.MessageBox.Show(args[3]);
        if (args.Length == 3)
        {
            try
            {
                RemoveInstalledFolder(args[0]);
                RemoveUserAccount(args[1]);
                RemoveShortCutFolder(args[2]);
                RemoveRegistryEntry();
            }
            catch (Exception e)
            {
            }
        }
        }

这就是我要传递的内容:

C:\WINDOWS\Uninstaller.exe  "C:\Program Files\Application name\"  "username"  "C:\Documents and Settings\All Users\Start Menu\Programs\application name"

问题是我可以正确获取第一个和第二个参数,但是最后一个是as C:\Documents

有什么帮助吗?


阅读 965

收藏
2020-05-19

共1个答案

一尘不染

我只是进行了检查并验证了问题。它使我感到惊讶,但这是第一个参数中的最后一个\。

"C:\Program Files\Application name\" <== remove the last '\'

这需要更多的解释,有人有想法吗?我倾向于称它为错误。


第2部分,我进行了更多测试,

"X:\\aa aa\\" "X:\\aa aa\" next

变成

X:\\aa aa\
X:\\aa aa" next

Google的一些小动作可以从Jon
Galloway
博客中获得一些见识,其基本规则是:

  • 反斜杠是转义字符
  • 总是转义
  • 仅在引号前加反斜杠。
2020-05-19