在服务里访问映射盘
之前发过一贴
http://topic.csdn.net/u/20111115/13/cb822f42-b965-4a97-b025-919f6abe4005.html
不知道为什么在公司的机器上打不开,再加上又有了新情况,于是再发一贴,能解决问题者请也回那贴都给分。
代码如下:
string cmd=@"use x: \\192.168.0.111\sharedir passss /user:userer";
System.Diagnostics.Process.Start("net",@cmd);
System.IO.FileInfo fileInfo = new System.IO.FileInfo(@"d:\vssver.scc");
System.IO.File.Copy(@"d:\vssver.scc",@"x:\"+fileInfo.Name);
报那个什么“找不到路径的一部分”的错。
于是我把后面两句代码改成了
cmd = @"copy d:\vssver.scc x:\";
Process.Start("cmd",@cmd);
这回不报错了,但是文件也没拷过去。
再改成
cmd = @"d:\vssver.scc x:\";
Process.Start("copy",@cmd);
还是不报错,还是没拷过去。
最后改成了
cmd = @"d:\vssver.scc x:\";
Process.Start("xcopy",@cmd);
好吧用外部命令终于成功了,Process.Start不支持内部命令吗?最奇怪的是System.IO总是找不到路径,不然就不用这么麻烦了。
但是更麻烦的来了,另外一本程序是要从映射盘把文件移动到本地
最开始还是用System.IO
DirectoryInfo filemovedir = new DirectoryInfo(@"X:\");
FileInfo[] FileList = filemovedir.GetFiles();
foreach(FileInfo file in FileList)
{
File.Move(file.FullName , @"C:\ser\" + file.Name);
}
当然和上面一样,“找不到路径的一部分”,而且调外部命令的方法也不好使了,没有移动的外部命令吧??
我想来想去,只有写个bat,里面就是一句move,然后用Process.Start调这个bat。
但这还不是最麻烦的,这本程序还要求判断哪个文件移动失败了,要把失败的文件名输出在log里。我晕,Process.Start不可能返得回来文件名啊!!彻底没招了……
想来想去,只有用System.IO是最好的,但是,各位大虾,怎样能让System.IO找到路径呢?