【问题标题】:Getting full path location and sending it to CMD window获取完整路径位置并将其发送到 CMD 窗口
【发布时间】:2015-03-24 16:41:26
【问题描述】:

所以我一直在研究一种从 adb 保存备份的方法,我想出的最佳方法是:

    saveFileDialog1.Title = "Save Backup";
    saveFileDialog1.OverwritePrompt = true;
    saveFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
    {   
        var process = Process.Start("CMD.exe", "/c adb backup -apk -all -f"+saveFileDialog1.FileName);
        process.WaitForExit();
    }

但是,无论我将文件保存在何处,它都不会将文件放在测试名称下。难道我做错了什么? 我的 openFileDialog 也一样:

openFileDialog1.Title = "Open Backup";
            openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                var process = Process.Start("adb.exe", "restore"+openFileDialog1.FileName);
                process.WaitForExit();
            }

【问题讨论】:

  • 看起来你忘记了 -f 和文件名之间的空格。

标签: c# winforms adb openfiledialog savefiledialog


【解决方案1】:

您的参数格式不正确。您在以下行中缺少一个空格:

var process = Process.Start("CMD.exe", "/c adb backup -apk -all -f"+saveFileDialog1.FileName);

-f"+saveFileDialog1.FileName 应改为 -f "+saveFileDialog1.FileName

您还应该将文件名用引号括起来以处理文件路径中的空格:

var process = Process.Start("CMD.exe", "/c adb backup -apk -all -f \""+saveFileDialog1.FileName+"\"");

【讨论】:

  • ... 如果路径中有空格,它将不起作用。这应该使用参数字符串数组而不是包含参数的“命令名”来完成,这样所有内容都会为您正确转义。
  • 我不敢相信这么简单的事情让我困惑了这么久。不过,我必须等待 10 分钟才能将其标记为答案。谢谢 :) (即使我是 C# 新手)
  • 感谢您的编辑。现在一切都说得通了。并标记为答案。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-17
  • 2017-03-16
  • 1970-01-01
  • 2013-05-05
  • 2011-12-11
  • 2014-12-14
相关资源
最近更新 更多