【ASP.NET】复制单个文件同时到多个目录
有时候,当我们更新了一个dll文件后,需要将该dll文件复制到到不同的文件夹中,手动操作会很麻烦,因此可以考虑利用程序实现。
利用powershell批量复制
示例代码如下:
$source="C:\\WebMVC\\web.config"
$destination = @("D:\\a\\","D:\\b\\","D:\\c\\")
foreach ($dir in $destination)
{
Copy-Item -Path $source -Destination ($dir+$source)
}
上述的代码可以把C盘内的一个web.config文件复制到D盘的三个不同的位置,但是输入$source和$destination非常麻烦,不太适合批量操作。
对Powershell代码进行改进,通过GUI的方式选择文件,并且允许用户输入多个目标位置,代码如下:
$myDialog = New-Object System.Windows.Forms.OpenFileDialog
$myDialog.Title = “Please select a file”
$myDialog.InitialDirectory = “C:\Windows”
$myDialog.Filter = “All Files (*.*)|*.*” $result = $myDialog.ShowDialog() If($result -eq “OK”) { $source = $myDialog.FileName $textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Size(,)
$textBox.Size = New-Object System.Drawing.Size(,)
$textBox.AcceptsReturn = $true
$textBox.AcceptsTab = $false
$textBox.Multiline = $true
$textBox.ScrollBars = 'Both'
$textBox.Text = $DefaultText # Create the OK button.
$okButton = New-Object System.Windows.Forms.Button
$okButton.Location = New-Object System.Drawing.Size(,)
$okButton.Size = New-Object System.Drawing.Size(,)
$okButton.Text = "OK"
$okButton.Add_Click({ $textBox.Text;
$paths=$textBox.Lines;
foreach($path in $paths)
{
Copy-Item -Path $source -Destination ($path)
}
$form.Close()
Write-Host("success!")
}) $form = New-Object System.Windows.Forms.Form
$form.Text = $WindowTitle
$form.Size = New-Object System.Drawing.Size(,)
$form.FormBorderStyle = 'FixedSingle'
$form.StartPosition = "CenterScreen"
$form.AutoSizeMode = 'GrowAndShrink'
$form.Topmost = $True
$form.AcceptButton = $okButton
$form.CancelButton = $cancelButton
$form.ShowInTaskbar = $true $form.Controls.Add($textBox)
$form.Controls.Add($okButton)
$form.Add_Shown({$form.Activate()})
$form.ShowDialog()
}
else {
Write-Host “Cancelled by user”
}
使用时,Powershell会自动打开文件选择窗口,待用户选择好文件后,会弹出一个文本框,用户可以输入目标路径,每行代表一个路径。输入完成点击OK后,源文件便会被同时复制到多个目标路径。
实际上,目标路径在输入的时候还是比较麻烦,逐条输入甚至还不如打开窗口,一个一个复制来的便捷。
为了更快的输入目标路径,推荐使用everything,搜索需要替换的目标文件名,通过批量复制文件路径的方式,可以快速获取到目标路径。

利用Windows Forms批量复制
Powershell编写GUI程序比较复杂,同时难以调试,采用Windows Forms的方式编程更加快捷。示例代码如下,可以方便进行批量复制操作。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO; namespace CopyFileToMultiPath
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void copyBtn_Click(object sender, EventArgs e)
{
try
{
string[] desPaths = desPathsTextBox.Lines;
foreach (var path in desPaths)
{
var desPath = path;
if(File.GetAttributes(path).HasFlag(FileAttributes.Directory))
{
if(path.LastOrDefault()=='\\')
{
desPath = path + Path.GetFileName(filePathTextBox.Text);
}
else
{
desPath = path + "\\" + Path.GetFileName(filePathTextBox.Text);
}
}
File.Copy(filePathTextBox.Text, desPath, true);
}
MessageBox.Show("Copy success!");
}
catch(Exception ex)
{
MessageBox.Show("Copy failed! "+ex.Message);
}
} private void selectBtn_Click(object sender, EventArgs e)
{
OpenFileDialog choofdlog = new OpenFileDialog();
choofdlog.Filter = "All Files (*.*)|*.*";
choofdlog.FilterIndex = ;
choofdlog.Multiselect = false; if (choofdlog.ShowDialog() == DialogResult.OK)
{
string sFileName = choofdlog.InitialDirectory + choofdlog.FileName;
filePathTextBox.Text = sFileName;
}
}
}
}

【ASP.NET】复制单个文件同时到多个目录的更多相关文章
- python从一个目录中复制全部文件图片至另一个目录中,及删除指定目录中的图片
import shutil import os #目录自己改一下即可,复制 path = "./static/imgs/" new_path = "./static/up ...
- kotlin单个文件及文件夹复制例子
最近学习kotlin,把java中的单个文件及包含文件夹的文件 复制操作改写为kotlin的代码,主要熟悉kotlin文件操作以及递归调用操作方法 演示代码如下: package com.exam.f ...
- SqlServer:SqlServer(数据库备份,数据文件迁移,增加数据库文件组,递归查询一周报送情况,查询近X天未报送单位,截断数据库日志,复制单个或多个数据库表到另一个数据库 )
1.数据备份 ) ) ) )),'-','') ) SET @savePath = 'f:/DatabaseBackup/' DECLARE My_Cursor CURSOR FOR ( select ...
- U盘不能复制4G以上的单个文件如何处理?
制作好雨后清风U盘启动盘后,有朋友在将雨后清风系统镜像文件拷贝传输至U盘时,会发现U盘提示文件过大,无法进行传输,但是U盘的剩余存储空间明显还足够,这是怎么回事呢? 其实这是U盘文件系统格式的原因,如 ...
- asp.net web开发——文件夹的上传和下载
ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现. 下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压. ASP.NE ...
- asp.net之大文件断点续传
ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现. 下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压. ASP.NE ...
- 无法在“EntityFramework”已存在的情况下创建影像复制该文件的解决方案
问题产生的原因:你项目正在生成中你就打开浏览器预览了,导致这个问题解决方案:右击重新生成项目,等生成后再打开 “/”应用程序中的服务器错误. 无法在“EntityFramework”已存在的情况下创建 ...
- sruts2:单个文件上传,多个文件上传(属性驱动)
文件上传功能在Struts2中得到了很好的封装,主要使用fileUpload上传组件. 1. 单个文件上传 1.1 创建上传单个文件的JSP页面.显示提交结果的JSP页面 uploadTest1.js ...
- 打印 上一主题 下一主题 利用cURL实现单个文件分多段同时下载,支持断点续传(修订版)
利用cURL实现单个文件分多段同时下载,支持断点续传(修订版) [复制链接] 摘自 http://bbs.chinaunix.net/thread-917952-1-1.html 在ubuntu下 ...
随机推荐
- oracle日常——sqlplus客户端登录
1.进入cmd 2.命令--sqlplus--提示输入帐号与密码 3.进入后,就可以直接键入sql命令 ps.sql命令后面需要添加分号后才可以回车执行
- C语言结构体对齐
1.结构体变量中的元素如何访问? (1)数组中元素的访问方式:表面上有2种方式(数组下标方式和指针方式):实质上都是指针方式访问.(2)结构体变量中的元素访问方式:只有一种,用.或者->的方式来 ...
- [翻译] Android是怎样绘制视图的
原文:How Android Draws Views 当一个Activity获取到焦点的时候,它的布局就开始被绘制. 绘制的过程由Android framework处理.但布局层级的根节点必须由Act ...
- jqGrid jqGrid分页参数+条件查询
HTML <div class="row"> <div class="col-sm-20"> <form id="for ...
- Android基础总结(九)
多媒体概念(了解) 文字.图片.音频.视频 计算机图片大小的计算(掌握) 图片大小 = 图片的总像素 * 每个像素占用的大小 单色图:每个像素占用1/8个字节 16色图:每个像素占用1/2个字节 25 ...
- python3使用pyinstaller打包apscheduler出的错
本来只是想用Python做一个定时任务小工具在服务器上运行,可是服务器在隔离区,各种禁止上外网,使用pip导出列表那种下载库的方法不管用,导致Python的各种库都下不到,官网离线下载又各种缺依赖,好 ...
- 【JavaWeb】Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架(一)
Spring+MyBatis 首先要搭建的是Spring+MyBatis的整合框架,毕竟Spring是整个Web框架的核心部位,而数据库操作是一切测试的基础嘛. 目录结构 ━java ┣ contro ...
- OOP,WEB开发实用小技巧
偶然读到一篇博客,记录一下心得.这种设计对于新手来说一般是想不到的,它充分的发挥了OOP语言的特性,让代码专用而清爽.这是不是重构的思想呢? 我们在写业务层的时候,有很多方法是重复功能的,我们就可以使 ...
- Jquery实现特效滑动菜单栏
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- vue-router2使用
条件:紧接前面vue.js开发环境搭建 1.在cmd输入:npm install vue-router,回车,等待,安装对应版本router: 2.在入口文件用 import vueRouter fr ...