问题描述
我正在尝试制作一个与“ guiformat”具有相同效果的应用(可用于重新格式化SD卡/ MicroSD ),但是我有点找出确切的操作方式的麻烦。
是否有一段简单的代码可以将SD卡格式化为fat32? (这只是一个例子。)如果有的话,我一定很傻-我找不到。
谢谢:)
解决方法
一种方法是连接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;
}