public static string[] GetFileNames(string directoryPath, string searchName)
{
return Directory.GetFiles(directoryPath, searchName, SearchOption.AllDirectories);
}


public class NetFileConntion
{
public static bool ConnectState(string path)
{
return ConnectState(path, "", "");
} public static bool ConnectState(string path, string userName, string passWord)
{
bool flag = false;
Process proc = new Process();
try
{
proc.StartInfo.FileName = " cmd.exe ";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.CreateNoWindow = true;
proc.Start();
string dosLine = @"net use * /del /y
net use " + path + " /User:" + userName + " " + passWord + " /PERSISTENT:YES";
proc.StandardInput.WriteLine(dosLine);
proc.StandardInput.WriteLine(" exit ");
while (!proc.HasExited)
{
proc.WaitForExit();
}
string errormsg = proc.StandardError.ReadToEnd();
proc.StandardError.Close();
if (string.IsNullOrEmpty(errormsg))
{
flag = true;
}
else
{
throw new Exception(errormsg);
}
}
finally
{
proc.Close();
proc.Dispose();
}
return flag;
}
}
 /// <summary>
/// 数据处理
/// </summary>
public override void Execute(JobExcutePara para)
{
if (ConfigHelper.Settings("RemoteCopyFileSwitch") != "")
{
return;
} //读取所有文件
var files = DirFileHelper.GetFileNames(ExcelRootPath, "*.*").Where(t => t.Contains("\\U_")).ToList();
//远程地址
var remotepaths = ConfigHelper.Settings("RemoteRootPaths")
.Split(new[] {'|'}, StringSplitOptions.RemoveEmptyEntries);
var remoteusers = ConfigHelper.Settings("RemoteUserPass")
.Split(new[] {'|'}, StringSplitOptions.RemoveEmptyEntries);
var sr=new StringBuilder();
foreach (var remotepath in remotepaths)
{
sr.Append(remotepath + ",");
try
{
bool status = NetFileConntion.ConnectState(remotepath, remoteusers[], remoteusers[]);
sr.Append(status + "," + files.Count + "," + remoteusers[] + "," + remoteusers[]);
if (status)
{
var startTime = new DateTime(DateTime.Now.Year,
DateTime.Now.Month,
DateTime.Now.Day,
, , );
//读取目标目录文件
var theFiles = DirFileHelper.GetFileNames(remotepath, "*.*");
sr.Append(theFiles.Length + ","); foreach (var file1 in files)
{
var fileinfo_1=new FileInfo(file1);
if (fileinfo_1.LastWriteTime < startTime)
{
continue;
}
var filepath = file1.Replace(ExcelRootPath, string.Empty);
var flag = false;
foreach (var file2 in theFiles)
{
//检查文件是否存在
if (file2.Contains(filepath))
{
flag = true;
break;
}
}
if (!flag)
{
//没有则进行写入复制
var targetPath = remotepath + filepath;
if (!Directory.Exists(Path.GetDirectoryName(targetPath)))
{
Directory.CreateDirectory(Path.GetDirectoryName(targetPath));
}
File.Copy(file1, targetPath);
}
}
}
}
catch (Exception ex)
{
LogHelper._Error("JobExcute__CopyFile ERROR", ex);
}
}
//LogHelper._Info(sr.ToString());
}

c# 通过文件夹共享复制文件到服务器的更多相关文章

  1. java-FileUtils(复制文件夹、复制文件、字符串直接写入文件中)(新手)

    实例: lx1: import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; pu ...

  2. C# 把一个文件夹下所有文件复制到另一个文件夹下 把一个文件夹下所有文件删除(转)

    C# 把一个文件夹下所有文件复制到另一个文件夹下   public static void CopyDirectory(string srcPath, string destPath) { try { ...

  3. VMWare12虚拟机实现主客机间的文件拖拽(复制粘贴)和文件夹共享

    版本: 主机:Windows 7 64位旗舰版 虚拟机: VMWare 12 + Windows 7 64位旗舰版 VMWare pro 12 + Ubuntu16.04LTS 64位 注:由于VMW ...

  4. 解决WIN7与虚拟机CentOS的文件夹共享问题

    一.系统与软件 WIN7 64bit.VirtualBox 5.0.14.CentOS 6.5.SecureCRT 7.2.3 二.使用文件夹共享需要安装增强功能,但是安装时无法读取光盘iso文件 三 ...

  5. 负载均衡下的资源文件配置/多站点下的资源文件夹共享(Windows IIS)

    前言: 负载均衡用的是NLB,微软的方案不太靠谱,举个例子吧,AB两台服务器负载出C,如果用户访问访问C之后分配的是A,那么如果A挂了,是不会自动切换到B的.据说后来还有一种NLB的方案可以实现,也不 ...

  6. win7文件夹共享(不新建账户、不带密码直接访问)

    1.右键需要共享的文件夹>共享>特定用户>选择Everyone>“添加”>“共享” 2.打开控制面板>按类别的查看方式>网络和Internet下的选择家庭组和 ...

  7. Powershell学习之道-文件夹共享及磁盘映射

    导读 在Linux环境下,我们很轻易就能得心应手地通过命令操作一切事物,在Windows下,Powershell也算是后起之秀,提供大量的cmdlet以及c#的横向拓展.下面将由小编带领大家通过Pow ...

  8. linux下跨服务器文件文件夹的复制

    文件的复制:scp –P (端口号) ./authorized_keys berchina@hadoop002:/home/berchina 文件夹的复制:scp -r -P (端口号) /home/ ...

  9. MFC下对文件及文件夹的操作(复制、剪切、删除、创建文件夹,写文件)

    一.文件夹的创建 void CFileOperationDlg::OnButtonMakeFolder() { // TODO: Add your control notification handl ...

随机推荐

  1. WebKit.net最简单使用方法

    WebKit.net是对WebKit的.Net封装,使用它.net程序可以非常方便的集成和使用webkit作为加载网页的容器.这里介绍一下怎么用它来显示一个网页这样的一个最简单的功能. 第一步: 下载 ...

  2. MyBtis—原理及初始化

    Mybatis的功能架构分为三层: 1)       API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库.接口层 一接收到调用请求就会调用数据处理层来完成具体的数据处理. ...

  3. facebook graph api 报错SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)')

    使用facebook graph api,报错如下 一开始以为是https证书验证失败,查了一下午源码,没有看到问题,于是把Python27\lib\site-packages\requests\ad ...

  4. 用python解析word文件(段落篇(paragraph) 表格篇(table) 样式篇(style))

    首先需要安装相应的支持库: 直接在命令行执行pip install python-docx 示例代码如下: import docxfrom docx import Document #导入库 path ...

  5. c++第三十天

    P154~p159:语句1.通常情况下顺序执行. 2.C++提供一组控制流(flow-of-control)语句以支持更复杂的执行路径. 3.空语句的作用:语法上需要一条语句,但是逻辑上不需要. ) ...

  6. Hmtl5 <input>中placeholder属性(新属性)

    Hmtl5 <input>中placeholder属性(新属性) 一.定义和用法 placeholder 属性提供可描述输入字段预期值的提示信息(hint). 该提示会在输入字段为空时显示 ...

  7. ZLYD团队第5周项目总结

    ZLYD团队第5周项目总结 项目进展 目前游戏人没有成功运行.初步判断是部分代码有误. 我们采用了两种运行方式,代码未出现明确错误.但问题可能是由于版本问题. 将Wall.java.Gold.java ...

  8. RabbitMQ 流程以及一些命令

    流程: producer&Consumer producer指的是消息生产者,consumer消息的消费者. Queue 消息队列,提供了FIFO的处理机制,具有缓存消息的能力.rabbitm ...

  9. JAVA8新特性——Lamda表达式

    JAVA9都要出来了,JAVA8新特性都没搞清楚,是不是有点掉队哦~ Lamda表达式,读作λ表达式,它实质属于函数式编程的概念,要理解函数式编程的产生目的,就要先理解匿名内部类. 先来看看传统的匿名 ...

  10. python 返回列表中的偶数

    def is_even_num(l): enum = [] for n in l: == : enum.append(n) return enum print(is_even_num([, , , , ...