启动MS DOS命令“attrib”作为进程(C#)

时间:2011-05-03 18:32:49

标签: c# dos

我正在尝试使用MSDOS“attrib”命令使用C#隐藏文件夹。

现在,我可以通过在批处理文件中编写“attrib”命令+参数,使用Process.Start()运行该文件,然后删除它来实现这一点。我想知道,我可以直接从C#中做到吗?

这是我到目前为止所尝试的......(下面的代码不起作用)

    public static void hideFolder(bool hide, string path)
    {
        string hideOrShow = (hide) ? "+" : "-";
        Process.Start("attrib " + hideOrShow + "h " + hideOrShow + "s \"" + path + "\" /S /D");
    }

任何帮助都会得到满足! 感谢名单!

4 个答案:

答案 0 :(得分:7)

你要求:

string hideOrShow = (hide) ? "+" : "-";
Process.Start("cmd /c attrib " + hideOrShow + "h " + hideOrShow + "s \"" + path + "\" /S /D");

你应该做什么:

File.SetAttributes(path, FileAttributes.Hidden);

答案 1 :(得分:1)

Process.Start()的第一个参数需要是可执行文件或文档的名称。你需要传递两个参数,如:

Process.Start("attrib.exe", hideOrShow + "h " + hideOrShow + "s \"" + path + "\" /S /D");

此外,虽然attrib.exe在直接调用时可以正常工作,但是大多数人都会将这种DOS风格的命令传递给命令解释器(这也适用于内置命令等)。

Process.Start("cmd.exe", "/c attrib " + restOfTheArguments);

答案 2 :(得分:1)

C#让这很简单 - 想法是你获取文件当前属性(File.GetAttributes()),然后在调用File.SetAttributes()之前添加Hidden属性

检查下面的内容,它会使c:\ blah hidden

static void Main(string[] args)
{
    FileAttributes oldAttributes = File.GetAttributes(@"c:\blah");
    File.SetAttributes(@"c:\blah", oldAttributes | FileAttributes.Hidden);
}

删除隐藏属性

,删除隐藏属性

static void Main(string[] args)
{
    FileAttributes newAttributes = File.GetAttributes(@"c:\blah");
    newAttributes = newAttributes & (~FileAttributes.Hidden);

    File.SetAttributes(@"c:\blah", newAttributes);
}

答案 3 :(得分:0)