当前位置: 首页 > article >正文

全网首创Windows Powershell 批量创建、重命名和拷贝文件夹和文件到指定目录

哈喽大家好,欢迎来到虚拟化时代君(XNHCYL)

   大家好,我是虚拟化时代君,一位潜心于互联网的技术宅男。这里每天为你分享各种你感兴趣的技术、教程、软件、资源、福利…(每天更新不间断,福利不见不散)

第一章、小叙

在这个数字化的宇宙中,文件夹和文件就像程序员的“孩子”,我们总是希望他们有一个整齐的家。于是,PowerShell 成为了我们的“数字保姆”,用它的魔法指令来批量创建、重命名和拷贝这些“小家伙”。恰巧总结下最近工作中云桌面的问题,譬如Horizon 虚拟应用中某些应用不支持并发,那我们可以批量脚本创建目录和文件。

第二章、批量创建文件夹

首先我们看到D盘虚拟化时代君的文件夹下面是空的,我们通过Powershell脚本批量创建。创建名字分别为:Xnhsdj-01-Xnhsdj-10。

图片

如下图所示,打开powershellse,输入脚本

图片

运行命令查看效果

图片

脚本如下,自取

# 虚拟化时代君出品# 定义基目录$baseDir = "D:\虚拟化时代君"# 确保基目录存在,如果不存在则创建if (-not (Test-Path -Path $baseDir)) {    New-Item -ItemType Directory -Path $baseDir}# 定义要创建的文件夹数量$startIndex = 1$endIndex = 10# 循环创建文件夹for ($i = $startIndex; $i -le $endIndex; $i++) {    # 格式化文件夹名称,确保序号为两位数字    $folderName = "Xnhsdj-" + "{0:D2}" -f $i    # 拼接基目录和文件夹名称,得到完整的文件夹路径    $folderPath = Join-Path -Path $baseDir -ChildPath $folderName    # 检查文件夹是否已存在,如果不存在则创建    if (-not (Test-Path -Path $folderPath)) {        New-Item -ItemType Directory -Path $folderPath        # 输出创建的文件夹路径        Write-Output "创建文件夹: $folderPath"    } else {        # 如果文件夹已存在,输出提示信息        Write-Output "文件夹已存在: $folderPath"    }}# 输出完成信息Write-Output "文件夹创建过程已成功完成。"

以上脚本亲自测试,如需要更改里面参数自行参考。

第三章、批量修改文件夹名字

我们在文件夹Xnhsdj-01下面创建了N个包含文件的文件夹,我们演示下批量修改文件夹名字。

图片

修改Powershell示例,如图所示

图片

脚本如下,自取

# 虚拟化时代君出品# 定义目标目录$targetDir = "D:\虚拟化时代君\Xnhsdj-01"# 确保目标目录存在if (-not (Test-Path -Path $targetDir)) {    Write-Output "目标目录不存在: $targetDir"    exit}# 获取目录下所有以 "telegram" 开头的文件夹(忽略大小写)$folders = Get-ChildItem -Path $targetDir -Directory | Where-Object { $_.Name -like "telegram*" }# 检查是否找到符合条件的文件夹if ($folders.Count -eq 0) {    Write-Output "没有找到以 'telegram' 开头的文件夹。"    exit}# 初始化文件夹计数器$counter = 1# 循环重命名文件夹foreach ($folder in $folders) {    # 格式化新的文件夹名,确保序号为两位数字    $newFolderName = "Telegram-" + "{0:D2}" -f $counter    # 构造新的文件夹路径    $newFolderPath = Join-Path -Path $targetDir -ChildPath $newFolderName    # 输出调试信息    Write-Output "正在重命名文件夹: $($folder.FullName) -> $newFolderName"    # 重命名文件夹    Rename-Item -Path $folder.FullName -NewName $newFolderName    # 增加计数器    $counter++}Write-Output "文件夹重命名过程已成功完成。"

第四章、批量复制文件到指定目录

我们演示将D:\虚拟化时代君\Xnhsdj-01下的所有文件夹和文件都复制到D:\虚拟化时代君下其他的文件夹下面

图片

正在拷贝 

图片

拷贝完成

图片

脚本如下,自取

# 虚拟化时代君出品# 定义源目录和目标根目录$sourceDir = "D:\虚拟化时代君\Xnhsdj-01"$targetRootDir = "D:\虚拟化时代君"# 确保源目录存在if (-not (Test-Path -Path $sourceDir)) {    Write-Output "源目录不存在: $sourceDir"    exit}# 获取源目录下的所有子目录和文件$items = Get-ChildItem -Path $sourceDir# 定义目标文件夹的名称列表$targetFolders = @("Xnhsdj-02", "Xnhsdj-03", "Xnhsdj-04", "Xnhsdj-05", "Xnhsdj-06", "Xnhsdj-07", "Xnhsdj-08", "Xnhsdj-09")# 循环遍历目标文件夹名称列表foreach ($folderName in $targetFolders) {    # 构造目标文件夹路径    $targetDir = Join-Path -Path $targetRootDir -ChildPath $folderName    # 确保目标文件夹存在,如果不存在则创建    if (-not (Test-Path -Path $targetDir)) {        New-Item -ItemType Directory -Path $targetDir        Write-Output "创建目标文件夹: $targetDir"    }    # 输出当前目标文件夹信息    Write-Output "正在处理目标文件夹: $targetDir"    # 循环遍历源目录下的子目录和文件    foreach ($item in $items) {        # 构造目标路径        $targetItemPath = Join-Path -Path $targetDir -ChildPath $item.Name        # 拷贝子目录和文件到目标文件夹        Copy-Item -Path $item.FullName -Destination $targetItemPath -Recurse -Force        Write-Output "已拷贝: $($item.FullName) -> $targetItemPath"    }}Write-Output "文件夹拷贝过程已成功完成。"

脚本里面自定义值说明提示:

  1. 定义源目录和目标根目录:

    • $sourceDir 变量定义了源目录,即 D:\虚拟化时代君\Xnhsdj-01

    • $targetRootDir 变量定义了目标根目录,即 D:\虚拟化时代君

  2. 确保源目录存在:

    • 使用 Test-Path 检查源目录是否存在,如果不存在则输出提示信息并退出脚本。

  3. 获取源目录下的所有子目录和文件:

    • 使用 Get-ChildItem 获取源目录下的所有子目录和文件。

  4. 定义目标文件夹的名称列表:

    • 使用 $targetFolders 数组定义目标文件夹的名称,即 Xnhsdj-02 到 Xnhsdj-09

  5. 循环遍历目标文件夹名称列表:

    • 使用 foreach 循环遍历目标文件夹名称列表。

    • 使用 Join-Path 构造目标文件夹路径。

    • 使用 Test-Path 检查目标文件夹是否存在,如果不存在则使用 New-Item 创建目标文件夹。

    • 输出当前正在处理的目标文件夹信息。

  6. 循环遍历源目录下的子目录和文件:

    • 使用 foreach 循环遍历获取到的子目录和文件。

    • 使用 Join-Path 构造目标路径。

    • 使用 Copy-Item 递归地将子目录和文件拷贝到目标文件夹,并输出拷贝结果。

第五章、往期回顾

如果您觉得文章不错可以查看以前的文章

全网首发Windows五大高危端口(135/136/137/139和445)安全防护策略

全网首发Windows Server 2019 AD 域控降级与退域的全面指南

Windows无需管理员权限,命令轻松修改IP和DNS

一文秒懂ipconfig、ifconfig和ip addr的区别与应用

从小白到高手:Windows注册表基础运维全攻略

Windows Server AD域控账号CMD批量导入小技巧

Windows安全防护技能抵御勒索病毒入侵威胁

全网首发Windows 系统中常用的巡检命令和 CMD 命令

紧急通告!Windows TCP/IP 远程代码执行高危漏洞(CVE-2024-38063)

解决方案:如何在虚拟机中扩展 Windows 11 C 盘,绕过恢复分区的限制!

Windows隐藏任意exe程序小秘籍

探索Windows秘密:揭晓30个常用端口的神秘面纱与使用技巧

Windows Server 2019 会话远程桌面-快速部署(RemoteApp)

Windows Server 2019 WSUS补丁服务器安装图解教程


http://www.kler.cn/news/341350.html

相关文章:

  • 【C++】适配器stack/queue/priority_queue使用和实现
  • redis集成到spring boot中使用
  • 设计模式:单例
  • 学习Ultralytics(data)(1)
  • ARTS Week 44
  • 车牌检测系统源码分享[一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]
  • 进入容器:掌控Docker的世界
  • C#操作SqlServer数据库存储过程
  • MYSQL-INNODB索引构成详解
  • Unity实现自定义图集(五)
  • Java重修笔记 第六十四天 坦克大战(十四)IO 流 - 标准输入输出流、InputStreamReader 和 OutputStreamWriter
  • go怎么处理线程之间的交互
  • Ubuntu20.04卸载ros2 foxy版本安装ros1 noetic版本
  • PigGo的安装配置
  • 网络安全-IPv4和IPv6的区别
  • 从0到1:企事业单位知识竞赛答题小程序迭代开发笔记一
  • Linux: debug: perf: report: --sort
  • 导出ES数据到excel
  • HashMap 和 Hashtable 有什么区别?
  • 基于Springboot vue应急物资供应管理系统设计与实现