Windows根據文件名批量在文件夾里查找文件并復制出來,用WPF實現的詳細步驟

項目前言

在日常工作和生活中,我們常常會遇到需要從大量文件中根據文件名批量查找特定文件并復制到指定位置的情況。手動一個個查找和復制文件不僅效率低下,還容易出錯。使用 Windows Presentation Foundation (WPF) 可以創建一個用戶友好的圖形界面應用程序,方便用戶輸入文件名列表、選擇源文件夾和目標文件夾,然后自動完成文件的查找和復制操作,提高工作效率。

詳細步驟

1. 創建 WPF 項目

打開 Visual Studio,創建一個新的 WPF 應用程序項目。

2. 設計界面

MainWindow.xaml文件中設計界面,包含輸入文件名列表的文本框、選擇源文件夾和目標文件夾的按鈕、顯示文件夾路徑的文本框以及執行查找和復制操作的按鈕。

3. 實現業務邏輯

MainWindow.xaml.cs文件中實現文件夾選擇、文件查找和復制的邏輯。

4. 運行程序

編譯并運行程序,測試功能。

代碼實現

MainWindow.xaml
<Window x:Class="FileSearchAndCopy.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="文件查找和復制" Height="450" Width="800"><Grid><Label Content="文件名列表(每行一個):" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top"/><TextBox x:Name="FileNameListTextBox" HorizontalAlignment="Left" Height="150" Margin="10,30,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="760"/><Label Content="源文件夾:" HorizontalAlignment="Left" Margin="10,190,0,0" VerticalAlignment="Top"/><TextBox x:Name="SourceFolderTextBox" HorizontalAlignment="Left" Height="23" Margin="10,210,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="600"/><Button Content="選擇源文件夾" HorizontalAlignment="Left" Margin="620,210,0,0" VerticalAlignment="Top" Width="150" Click="SelectSourceFolderButton_Click"/><Label Content="目標文件夾:" HorizontalAlignment="Left" Margin="10,250,0,0" VerticalAlignment="Top"/><TextBox x:Name="TargetFolderTextBox" HorizontalAlignment="Left" Height="23" Margin="10,270,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="600"/><Button Content="選擇目標文件夾" HorizontalAlignment="Left" Margin="620,270,0,0" VerticalAlignment="Top" Width="150" Click="SelectTargetFolderButton_Click"/><Button Content="查找并復制文件" HorizontalAlignment="Left" Margin="300,320,0,0" VerticalAlignment="Top" Width="200" Click="SearchAndCopyFilesButton_Click"/><TextBlock x:Name="StatusTextBlock" HorizontalAlignment="Left" Margin="10,370,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="760"/></Grid>
</Window>    

MainWindow.xaml.cs

using System;
using System.IO;
using System.Windows;
using System.Windows.Forms;
using MessageBox = System.Windows.MessageBox;namespace FileSearchAndCopy
{public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}private void SelectSourceFolderButton_Click(object sender, RoutedEventArgs e){using (var folderBrowserDialog = new FolderBrowserDialog()){if (folderBrowserDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK){SourceFolderTextBox.Text = folderBrowserDialog.SelectedPath;}}}private void SelectTargetFolderButton_Click(object sender, RoutedEventArgs e){using (var folderBrowserDialog = new FolderBrowserDialog()){if (folderBrowserDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK){TargetFolderTextBox.Text = folderBrowserDialog.SelectedPath;}}}private void SearchAndCopyFilesButton_Click(object sender, RoutedEventArgs e){try{string sourceFolder = SourceFolderTextBox.Text;string targetFolder = TargetFolderTextBox.Text;string[] fileNames = FileNameListTextBox.Text.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);if (string.IsNullOrEmpty(sourceFolder) || string.IsNullOrEmpty(targetFolder) || fileNames.Length == 0){MessageBox.Show("請輸入文件名列表、選擇源文件夾和目標文件夾。");return;}if (!Directory.Exists(sourceFolder)){MessageBox.Show("源文件夾不存在。");return;}if (!Directory.Exists(targetFolder)){Directory.CreateDirectory(targetFolder);}int copiedCount = 0;foreach (string fileName in fileNames){string[] foundFiles = Directory.GetFiles(sourceFolder, fileName, SearchOption.AllDirectories);foreach (string foundFile in foundFiles){string destinationFilePath = Path.Combine(targetFolder, Path.GetFileName(foundFile));File.Copy(foundFile, destinationFilePath, true);copiedCount++;}}StatusTextBlock.Text = $"共復制了 {copiedCount} 個文件。";}catch (Exception ex){MessageBox.Show($"發生錯誤: {ex.Message}");}}}
}    

總結

通過 WPF 創建的這個文件查找和復制應用程序,用戶可以方便地輸入文件名列表、選擇源文件夾和目標文件夾,然后自動完成文件的查找和復制操作。該程序利用了 WPF 的圖形界面設計能力和.NET 的文件操作功能,實現了一個簡單而實用的工具。在實際開發中,還可以進一步擴展功能,如添加進度條顯示復制進度、支持更多的文件查找規則等。同時,需要注意異常處理,確保程序在遇到各種情況時都能穩定運行。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897985.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897985.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897985.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PHP語法基礎

PHP語法基礎 一&#xff0c;變量 在PHP中&#xff0c;變量是存儲數據的容器&#xff0c;其靈活性和動態類型系統是PHP的核心特性之一。以下是PHP變量的詳細解析&#xff0c;涵蓋聲明、作用域、類型轉換及最佳實踐&#xff1a; 1. 變量基礎 聲明與命名規則 無需顯式聲明類型&…

Java 并發編程——BIO NIO AIO 概念

參考 Java 并發編程——BIO NIO AIO 概念 阻塞與非阻塞、同步與異步概念 系統調用、緩存、物理設備阻塞與非阻塞同步與異步 四種主要的 IO 模型 同步阻塞 IO同步非阻塞 IOIO 多路復用異步 IO select&#xff0c;poll&#xff0c;epoll 系統調用命令

探索Maas平臺與阿里 QWQ 技術:AI調參的魔法世界

摘要&#xff1a;本文介紹了藍耘 Maas 平臺在人工智能領域的表現及其核心優勢&#xff0c;包括強大的模型支持、高效的資源調度和友好的操作界面。文章還探討了藍耘 Maas 平臺與阿里 QWQ 技術的融合亮點及應用拓展實例&#xff0c;并提供了調參實戰指南&#xff0c;最后對藍耘 …

Python 實現大文件的高并發下載

項目背景 基于一個 scrapy-redis 搭建的分布式系統&#xff0c;所有item都通過重寫 pipeline 存儲到 redis 的 list 中。這里我通過代碼演示如何基于線程池 協程實現對 item 的中文件下載。 Item 結構 目的是為了下載 item 中 attachments 保存的附件內容。 {"crawl_tim…

MySQL與Canal、RabbitMQ集成指南

MySQL 部分 1. 查看是否開啟 binlog MySQL 8 默認開啟 binlog。可以通過以下命令查看是否開啟&#xff1a; SHOW VARIABLES LIKE log_bin;如果返回結果為 ON&#xff0c;則表示 binlog 已開啟。 Variable_nameValuelog_binON 2. 若未開啟 binlog&#xff0c;則需手動配置 …

X86 RouterOS 7.18 設置筆記十:上海電信IPTV使用msd_lite實現組播轉單撥

X86 j4125 4網口小主機折騰筆記五&#xff1a;PVE安裝ROS RouterOS X86 RouterOS 7.18 設置筆記一&#xff1a;基礎設置 X86 RouterOS 7.18 設置筆記二&#xff1a;網絡基礎設置(IPV4) X86 RouterOS 7.18 設置筆記三&#xff1a;防火墻設置(IPV4) X86 RouterOS 7.18 設置筆記四…

Select 選擇器選項位置偏移的解決方案

Select 選擇器選項位置偏移的解決方案 在使用 Select 組件時&#xff0c;可能會遇到下拉選項位置偏移的問題。這通常由 CSS 樣式、組件 渲染方式 或 父級元素的影響 造成。以下是詳細的排查步驟和解決方案。 一、常見原因 position: relative; 或 overflow: hidden; 影響下拉菜…

LeetCode 解題思路 17(Hot 100)

解題思路&#xff1a; 找到鏈表中點&#xff1a; 使用快慢指針法&#xff0c;快指針每次移動兩步&#xff0c;慢指針每次移動一步。當快指針到達末尾時&#xff0c;慢指針指向中點。遞歸分割與排序&#xff1a; 將鏈表從中點處分割為左右兩個子鏈表&#xff0c;分別對這兩個子…

數學建模歷程之初見

第一次接觸數學建模是在上大學前&#xff0c;當時只是聽過。起源于我在大學的老鄉群里聊天&#xff0c;由于當時年輕有點傻&#xff0c;說的話太多了&#xff0c;什么都問哈哈哈哈哈。 后來有個學長從老鄉群里加我&#xff0c;問我怎么話那么多&#xff0c;你們懂當時對我幼小…

Python 科學計算與機器學習入門:NumPy + Scikit-Learn 實戰指南

Langchain系列文章目錄 01-玩轉LangChain&#xff1a;從模型調用到Prompt模板與輸出解析的完整指南 02-玩轉 LangChain Memory 模塊&#xff1a;四種記憶類型詳解及應用場景全覆蓋 03-全面掌握 LangChain&#xff1a;從核心鏈條構建到動態任務分配的實戰指南 04-玩轉 LangChai…

「自動駕駛背后的數學:從傳感器數據到控制指令的函數嵌套」—— 揭秘人工智能中的線性函數、ReLU 與復合函數

引言 自動駕駛技術是人工智能領域的一個重要應用&#xff0c;其核心在于如何將傳感器數據轉化為車輛控制指令。這一過程涉及大量的數學知識&#xff0c;包括線性函數、激活函數&#xff08;如 ReLU&#xff09;以及復合函數的嵌套使用。本文將深入探討自動駕駛中的數學原理&am…

詳解SQL數據定義功能

數據定義 1. 數據庫模式&#xff08;Schema&#xff09;的定義與刪除定義模式刪除模式 2. 基本表的定義、修改與刪除定義表約束1. NOT NULL 約束2. DEFAULT 約束3. UNIQUE 約束4. PRIMARY KEY 約束多列主鍵示例&#xff1a; 5. FOREIGN KEY 約束6. CHECK 約束7. AUTO_INCREMENT…

Redis超高并發分key實現

Redis扛并發的能力是非常強的&#xff0c;所以高并發場景下經常會使用Redis&#xff0c;但是Redis單分片的寫入瓶頸在2w左右&#xff0c;讀瓶頸在10w左右&#xff0c;如果在超高并發下即使是集群部署Redis&#xff0c;單分片的Redis也是有可能扛不住的&#xff0c;如下圖所示&a…

AI Agent 時代開幕-Manus AI與OpenAI Agent SDK掀起新風暴

【本周AI新聞: AI Agent 時代開幕-Manus AI與OpenAI Agent SDK掀起新風暴】 https://www.bilibili.com/video/BV1bkQyYCEvQ/?share_sourcecopy_web&vd_source32ed33e1165d68429b2e2eb4749f3f26 最近AI圈子里最火的話題非Manus莫屬&#xff01;這款由中國武漢創業公司“蝴…

多時間尺度的配電網深度強化學習無功優化策略的Python示例代碼框架

以下是一個簡單的多時間尺度的配電網深度強化學習無功優化策略的Python示例代碼框架&#xff0c;用于幫助你理解如何使用深度強化學習&#xff08;以深度Q網絡 DQN 為例&#xff09;來處理配電網的無功優化問題。在實際應用中&#xff0c;你可能需要根據具體的配電網模型和需求…

劍指 Offer II 081. 允許重復選擇元素的組合

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20081.%20%E5%85%81%E8%AE%B8%E9%87%8D%E5%A4%8D%E9%80%89%E6%8B%A9%E5%85%83%E7%B4%A0%E7%9A%84%E7%BB%84%E5%90%88/README.md 劍指 Offer II 081. 允許重復選擇…

Webpack 前端性能優化全攻略

文章目錄 1. 性能優化全景圖1.1 優化維度概覽1.2 優化效果指標 2. 構建速度優化2.1 緩存策略2.2 并行處理2.3 減少構建范圍 3. 輸出質量優化3.1 代碼分割3.2 Tree Shaking3.3 壓縮優化 4. 運行時性能優化4.1 懶加載4.2 預加載4.3 資源優化 5. 高級優化策略5.1 持久化緩存5.2 模…

虛擬電商-數據庫分庫分表(二)

本文章介紹&#xff1a;使用Sharding-JDBC實現數據庫分庫分表&#xff0c;數據庫分片策略&#xff0c;實現數據庫按月分表 一、Sharding-JDBC使用 1.1.準備環境 步驟一&#xff1a;分庫分表sql腳本導入 創建了兩個數據庫&#xff1a;chongba_schedule0 和chongba_schedule1…

向量數據庫對比以及Chroma操作

一、向量數據庫與傳統類型數據庫 向量數據庫&#xff08;Vector Storage Engine&#xff09;與傳統類型的數據庫如關系型數據庫&#xff08;MySQL&#xff09;、文檔型數據庫&#xff08;MongoDB&#xff09;、鍵值存儲&#xff08;Redis&#xff09;、全文搜索引擎&#xff0…

python列表基礎知識

列表 創建列表 1.列表的定義&#xff1a;可變的&#xff0c;有序的數據結構&#xff0c;可以隨時添加或者刪除其中的元素 2.基本語法&#xff1a;字面量【元素1&#xff0c;元素2&#xff0c;元素3】使用[]創建列表 定義變量&#xff1a;變量名稱【元素1&#xff0c;元素2&…