虽然小弟知道C#对于一个文件夹里有子夹,子夹里有文件的文件夹是不能直接删除的,是要通过历遍子夹里的文件删除后再递归删除文件夹,但小弟又想了想,WINDOWS里有一个CMD命令是可以直接删除文件夹的...所以小弟就想通过生成一个.bat文件,用线程调用它来实现删除文件夹,可惜是失败了...
情况是这样:那个.bat文件在C#线程调用的情况下,是有工作,但不作为...没有把文件夹删除,里边的文件也一动不动.但当我把这个.bat文件保存起来时,在WINDOWS底下一运行,就什么都做好了...不知这是为什么,请大侠们帮帮忙....
Process pro = new Process();
pro.StartInfo.UseShellExecute = false;
pro.StartInfo.RedirectStandardInput = true;
pro.StartInfo.RedirectStandardOutput = true;
pro.StartInfo.RedirectStandardError = true;
pro.StartInfo.CreateNoWindow = true;
string bat = "rd /q /s oracle";
//string fileName=Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.InternetCache), "temp.bat");
string fileName = @"C:\temp.bat";
StreamWriter swWriter = new StreamWriter(fileName);
swWriter.WriteLine(bat);
swWriter.Flush();
swWriter.Close();
pro = Process.Start(fileName);
//File.Delete(fileName);
10 个解决方案
#1
Microsoft Windows [版本 6.1.7600]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\Users\Administrator>del/?
删除一个或数个文件。
DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
names 指定一个或多个文件或者目录列表。
通配符可用来删除多个文件。
如果指定了一个目录,该目录中的所
有文件都会被删除。
/P 删除每一个文件之前提示确认。
/F 强制删除只读文件。
/S 删除所有子目录中的指定的文件。
/Q 安静模式。删除全局通配符时,不要求确认
/A 根据属性选择要删除的文件
属性 R 只读文件 S 系统文件
H 隐藏文件 A 存档文件
I 无内容索引文件 L 重分析点
- 表示“否”的前缀
如果命令扩展被启用,DEL 和 ERASE 更改如下:
/S 开关的显示句法会颠倒,即只显示已经
删除的文件,而不显示找不到的文件。
C:\Users\Administrator>
#2
用C#,下例可删除“d:\1"目录及其下的所有子目录。
Directory.Delete("d:\\1", true);
Directory.Delete("d:\\1", true);
#3
晕...不可能通删的...必须是先删了里边的文件,才可以删夹的!!
#4
UP ~~~~
#5
直接写一个递归不就解决问题了吗
干嘛搞的那么复杂
干嘛搞的那么复杂
#6
我也想,但里边的文件超多呢!!
#7
嗯?是谁告诉你这一点的呢??
呵呵,不过据我所知是可以的(我操作文件,操作很久了):
System.IO.Directory.Delete("filePath",true);
#8
如果是asp.net的话有可能是权限问题
#9
进程用户权限限制...你要先搞明白,当前用户和进程用户是两码事,虽然有些进程是用当前用户启动的...
#10
xin4036兄 提出的方法是可行的,但我就不明白,因为我以前做过一个也是对文件夹删除的操作,但都是报错,从一个前辈那得到方法就是先历遍文件夹里的文件逐个删除后,再删夹.最后是实现了,所以小弟就一直认为是这样子...(因为当时我也尝试过您说的方法去删夹的,但都是不成功的,但不知为什么这次就成功了!)
另:关于权限问题,我是单一用户,所以线程也是同一个用户...
另:关于权限问题,我是单一用户,所以线程也是同一个用户...
#1
Microsoft Windows [版本 6.1.7600]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\Users\Administrator>del/?
删除一个或数个文件。
DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
names 指定一个或多个文件或者目录列表。
通配符可用来删除多个文件。
如果指定了一个目录,该目录中的所
有文件都会被删除。
/P 删除每一个文件之前提示确认。
/F 强制删除只读文件。
/S 删除所有子目录中的指定的文件。
/Q 安静模式。删除全局通配符时,不要求确认
/A 根据属性选择要删除的文件
属性 R 只读文件 S 系统文件
H 隐藏文件 A 存档文件
I 无内容索引文件 L 重分析点
- 表示“否”的前缀
如果命令扩展被启用,DEL 和 ERASE 更改如下:
/S 开关的显示句法会颠倒,即只显示已经
删除的文件,而不显示找不到的文件。
C:\Users\Administrator>
#2
用C#,下例可删除“d:\1"目录及其下的所有子目录。
Directory.Delete("d:\\1", true);
Directory.Delete("d:\\1", true);
#3
晕...不可能通删的...必须是先删了里边的文件,才可以删夹的!!
#4
UP ~~~~
#5
直接写一个递归不就解决问题了吗
干嘛搞的那么复杂
干嘛搞的那么复杂
#6
我也想,但里边的文件超多呢!!
#7
嗯?是谁告诉你这一点的呢??
呵呵,不过据我所知是可以的(我操作文件,操作很久了):
System.IO.Directory.Delete("filePath",true);
#8
如果是asp.net的话有可能是权限问题
#9
进程用户权限限制...你要先搞明白,当前用户和进程用户是两码事,虽然有些进程是用当前用户启动的...
#10
xin4036兄 提出的方法是可行的,但我就不明白,因为我以前做过一个也是对文件夹删除的操作,但都是报错,从一个前辈那得到方法就是先历遍文件夹里的文件逐个删除后,再删夹.最后是实现了,所以小弟就一直认为是这样子...(因为当时我也尝试过您说的方法去删夹的,但都是不成功的,但不知为什么这次就成功了!)
另:关于权限问题,我是单一用户,所以线程也是同一个用户...
另:关于权限问题,我是单一用户,所以线程也是同一个用户...