【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(10,40)
    $textBox.Size = New-Object System.Drawing.Size(575,200)
    $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(415,250)
    $okButton.Size = New-Object System.Drawing.Size(75,25)
    $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(610,320)
    $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 = 1;
            choofdlog.Multiselect = false;

            if (choofdlog.ShowDialog() == DialogResult.OK)
            {
                string sFileName = choofdlog.InitialDirectory + choofdlog.FileName;
                filePathTextBox.Text = sFileName;
            }
        }
    }
}

最新博客地址:http://blog.turenlong.com/

时间: 2024-08-03 23:03:34

【ASP.NET】复制单个文件同时到多个目录的相关文章

单个文件复制

/**** * 复制单个文件 * @param oldPath String原文件路径 如:c:/fqf.txt * @param newPath String 复制后路径 如:f:/fqf.txt */ public void copyFile(String oldPath,String newPath) { try { int bytesum=0; int byteread=0; File oldfile=new File(oldPath); if(oldfile.exists()){//文

java从一个目录拷贝文件或整个文件夹到另一个目录下

** * 复制单个文件 * @param oldPath String 原文件路径 如:c:/fqf.txt * @param newPath String 复制后路径 如:f:/fqf.txt * @return boolean */ public void copyFile(String oldPath, String newPath) { try { int bytesum = 0; int byteread = 0; File oldfile = new File(oldPath); i

asp.net web开发——文件夹的上传和下载

ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现. 下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压. ASP.NET页面设计:TextBox和Button按钮. TextBox中需要自己受到输入文件夹的路径(包含文件夹),通过Button实现选择文件夹的问题还没有解决,暂时只能手动输入. 两种方法:生成rar和zip. 1.生成rar using Microsoft.Win32; using System.Di

springMVC easyUI filebox 单个文件上传

被这个文件上传坑到现在,还是自己技术问题,照着之前extjs项目那边的上传实例,愣是上传不了 到后面就查了下springMVC的文件上传,按照那样搞定了http://blog.csdn.net/jadyer/article/details/7575934 easyui 前端文件 <form id="brandAddForm" method="post" enctype="multipart/form-data"> <table

ASP如何检测某文件夹是否存在,不存在则自动创建

ASP如何检测某文件夹是否存在,不存在则自动创建 folder=server.mappath("/imagess") Set fso = CreateObject("Scripting.FileSystemObject") if fso.fileexists(Server.mappath(filepath)) then respnse.write("都有了还建什么建") else fso.createfolder(folder) end if S

打印 上一主题 下一主题 利用cURL实现单个文件分多段同时下载,支持断点续传(修订版)

  利用cURL实现单个文件分多段同时下载,支持断点续传(修订版) [复制链接] 摘自 http://bbs.chinaunix.net/thread-917952-1-1.html 在ubuntu下测试通过, 适合在支持多线程下载的站点下载文件 可以配合flashgot在firefox中使用 用法:./mycurl url [referedUrl] 第一个参数url是要下载的文件的地址,第二个参数referedUrl是指需要参照的网址(一般不需要,有些网站,比如华军需要此参数) 例如: ./m

复制一个文件夹下所有的文件和子文件夹内容到另一个文件夹

PS:涉及单个文件复制.目录的创建.递归的使用 public class CopyAllFiles {  public static void main(String[] args) {   copyDirectory("F:\\XXX", "F:\\YYY");  }    //复制文件的方法  public static void copyFiles(File sourceFile, File targetFile) {   //声明   BufferedInp

asp.net mvc5 下载文件方法

控制器自带的 FileContentResult 可以让我们很方便的返回文件到服务端,减少了很多步骤.用于下载文件的时候,像视频.文本.图片这种浏览器支持的文件,默认就会被浏览器打开.这时候想让它变成下载,还需要设置一下响应头,告诉浏览器如何处理才行. public ActionResult DownLoadFile(String path, string fileName, string contentType) { Response.AddHeader("Content-Dispositio

(转)GitHub上想下载单个文件方法

找到该文件,单机raw,如下图: 然后会在网页打开该文件,复制URL,下载即可(如果是不可预览文件,会自动下载). 转自: GitHub上想下载单个文件方法 - Smallcaff的博客 - CSDN博客 https://blog.csdn.net/smallcaff/article/details/79623174 原文地址:https://www.cnblogs.com/jyfootprint/p/10292145.html