我正在尝试使用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");
}
任何帮助都会得到满足! 感谢名单!
答案 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)