【问题标题】:How do I format an SD Card to FAT32 programmatically? C# [duplicate]如何以编程方式将 SD 卡格式化为 FAT32? C# [重复]
【发布时间】:2020-10-22 05:13:08
【问题描述】:

我正在尝试制作一个与“guiformat”具有相同效果的应用程序(可用于重新格式化 SD 卡/MicroSD)并且我有点很难准确地找出如何

是否有一段简单的代码可以将 SD 卡格式化为 FAT32? (这只是一个例子。)如果有,我一定很笨——我找不到它。

谢谢:)

【问题讨论】:

标签: c# format sd-card fat32


【解决方案1】:

一种方法是接口diskpart。 这是我项目中的一些示例代码: 根据应用程序,您可能应该添加一些对 diskpart 输出的检查,以查看操作是否成功。

using System.Diagnostics;    
    
bool formatSdCard()
{
    bool foundDisk = false;

    Console.WriteLine("Formatting SD card...");

    Process p = new Process();
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.FileName = @"C:\Windows\System32\diskpart.exe";
    p.StartInfo.RedirectStandardInput = true;
    p.Start();
    int diskNum = 1;
    while (!foundDisk) {
        p.StandardInput.WriteLine("select disk " + diskNum.ToString());
        p.StandardInput.WriteLine("detail disk");

        while (true)
        {
            string output = p.StandardOutput.ReadLine();
            Console.WriteLine(output);
            if (output.Contains("Generic Ultra HS-SD/MMC USB Device"))    // Replace this string to match your device
            {
                foundDisk = true;
                Console.WriteLine("Found disk! #" + diskNum.ToString());
            }
            if (output.Contains("Disk ID"))
            {
                break;
            }

        }

        diskNum++;

        if(diskNum > 10)
        {
            Console.WriteLine("Cannot find SD Card!");
            return false;
        }
    }


    p.StandardInput.WriteLine("CLEAN");
    p.StandardInput.WriteLine("CREATE PARTITION EXTENDED");
    p.StandardInput.WriteLine("CREATE PARTITION LOGICAL");
    p.StandardInput.WriteLine("FORMAT FS=FAT32 QUICK");

    p.StandardInput.WriteLine("EXIT");
    p.WaitForExit();

    Console.WriteLine("SD Format OK!");

    return true;
}

【讨论】:

  • 那么,这将完全格式化 SD 卡(或 可移动磁盘)并将其重新格式化为 FAT32?还是我错过了什么?
  • 我可以将“FS=FAT32”行更改为“FS=NTFS”行吗?还是我错了?
  • 如何获取某个磁盘的磁盘号?例如在 E: 和 D: 中,哪一个是 1 或 2?
  • 看到这一行: if (output.Contains("Generic Ultra HS-SD/MMC USB Device")) // 替换此字符串以匹配您的设备 将标识符字符串设置为您的 SD 的名称读卡器。当然,这只有在您始终使用相同的 SD 读卡器型号(我的应用程序就是这种情况)时才能正常工作。如果您需要匹配特定的驱动器号,则可以过滤“详细磁盘”输出的最后一部分,其中写出卷信息(包括字母)。
  • 嗯。好的,谢谢:)
猜你喜欢
  • 2010-11-16
  • 1970-01-01
  • 1970-01-01
  • 2013-02-05
  • 2015-01-15
  • 2011-05-17
  • 2012-01-10
  • 2012-09-11
  • 2011-06-05
相关资源
最近更新 更多