当前位置:TranBon博客 > 首页 > Check out the personal website > 复制指定文件夹并批量重命名子文件夹、子文件为指定文件名

复制指定文件夹并批量重命名子文件夹、子文件为指定文件名

adminis9个月前 (12-03)Check out the personal website102820

See details

  • 输入数值1输入数字2把“输入数值1”这个目录复制并重命名“输入数字2”,且把子目录及文件符合“输入数值1”也重命名为“输入数字2”如“输入数值1”输入2024,“输入数值2”输入2025。把“C:\path\to\destination\2024”复制成“C:\path\to\destination\2025”子目录里的电-20240101日、付款凭证-20240102日...等,重命名为电-20250101日、付款凭证-20250102日...等子文件修改完成10秒后,子文件夹2024-012024-02...2024-12等,重命名为2025-012025-02...2025-12


cite

要实现您的需求,我们需要编写一个PowerShell脚本,该脚本将执行以下操作:

  1. 复制名为“输入数值1”(例如2024)的目录,并将其重命名为“输入数值2”(例如2025)。

  2. 递归地遍历新复制目录中的所有文件和子目录。

  3. 对于文件名中包含“输入数值1”的文件,将其重命名为包含“输入数值2”的新名称。

  4. 等待10秒钟。

  5. 对于子目录名中包含“输入数值1”-月份格式的目录,将其重命名为包含“输入数值2”-月份格式的新名称。

以下是一个满足您需求的PowerShell脚本示例:

  • # 参数输入
  • param (
  •     [string]$sourceYear = "2024",
  •     [string]$targetYear = "2025"
  • )
  • # 定义源目录路径
  • $sourceDirPath = "C:\path\to\destination\$sourceYear"
  • # 定义目标目录路径
  • $targetDirPath = "C:\path\to\destination\$targetYear"
  • # 检查源目录是否存在
  • if (!(Test-Path -Path $sourceDirPath)) {
  •     Write-Host "源目录不存在: $sourceDirPath" -ForegroundColor Red
  •     exit
  • }
  • # 复制源目录到目标目录,包括所有子目录和文件
  • Copy-Item -Path $sourceDirPath -Destination $targetDirPath -Recurse -Force
  • # 获取目标目录中的所有文件,并重命名
  • $files = Get-ChildItem -Path $targetDirPath -Recurse -File
  • foreach ($file in $files) {
  •     if ($file.Name -match $sourceYear) {
  •         $newName = $file.Name -replace $sourceYear, $targetYear
  •         $newFullPath = Join-Path -Path $file.DirectoryName -ChildPath $newName
  •         Rename-Item -Path $file.FullName -NewName $newFullPath
  •     }
  • }
  • # 等待10秒钟
  • Start-Sleep -Seconds 10
  • # 获取目标目录中的所有子目录,并重命名
  • $directories = Get-ChildItem -Path $targetDirPath -Directory
  • foreach ($directory in $directories) {
  •     if ($directory.Name -match "\d{4}-\d{2}$") { # 匹配格式为 YYYY-MM 的目录
  •         $newName = $directory.Name -replace $sourceYear, $targetYear
  •         $newFullPath = Join-Path -Path $directory.Parent.FullName -ChildPath $newName
  •         Rename-Item -Path $directory.FullName -NewName $newFullPath
  •     }
  • }
  • Write-Host "脚本执行完毕。" -ForegroundColor Magenta

使用说明:

  1. 将上述脚本保存为一个.ps1文件,例如CopyAndRename.ps1

  • .\CopyAndRename.ps1



注意事项

  1. 请将$sourceDirPathcode$targetDirPath的路径更改为实际的源目录和目标目录路径。

  • 脚本中的-match "\d{4}-\d{2}$"用于匹配格式为YYYY-MM的目录,如果您的目录格式不同,请相应地修改正则表达式。

  • 脚本使用了Start-Sleep -Seconds 10来等待10秒钟,然后再继续执行子目录的重命名操作。

  • 在运行脚本之前,请确保您有足够的权限来访问和修改这些目录和文件。

  • 如果目录或文件正在被其他程序使用,重命名操作可能会失败。在这种情况下,请关闭占用这些文件的应用程序,然后再次尝试运行脚本。



Image

要实现您描述的功能,我们可以编写一个PowerShell脚本,该脚本将接收两个输入参数:输入数值1(例如2024)和输入数值2(例如2025),然后根据这些参数执行目录和文件的复制与重命名操作。

以下是一个示例PowerShell脚本:

  • # 参数输入
    param (
        [string]$sourceYear, # 输入要替换的源年份,例如2024
        [string]$targetYear  # 输入要替换成的新年份,例如2025
    )

    # 定义源目录路径
    $sourceDirPath = "C:\path\to\destination\$sourceYear"

    # 定义目标目录路径
    $targetDirPath = "C:\path\to\destination\$targetYear"

    # 检查源目录是否存在
    if (!(Test-Path -Path $sourceDirPath)) {
        Write-Host "源目录不存在: $sourceDirPath" -ForegroundColor Red
        exit
    }

    # 复制源目录到目标目录,包括所有子目录和文件
    Copy-Item -Path $sourceDirPath -Destination $targetDirPath -Recurse -Force

    # 获取目标目录中的所有文件,并重命名
    $files = Get-ChildItem -Path $targetDirPath -Recurse -File
    foreach ($file in $files) {
        if ($file.Name -match $sourceYear) {
            $newName = $file.Name -replace $sourceYear, $targetYear
            $newFullPath = Join-Path -Path $file.DirectoryName -ChildPath $newName
            Rename-Item -Path $file.FullName -NewName $newFullPath
        }
    }

    # 等待10秒钟
    Start-Sleep -Seconds 10

    # 获取目标目录中的所有子目录,并重命名
    $directories = Get-ChildItem -Path $targetDirPath -Directory
    foreach ($directory in $directories) {
        if ($directory.Name -match "\d{4}-\d{2}$") { # 匹配格式为 YYYY-MM 的目录
            $newName = $directory.Name -replace $sourceYear, $targetYear
            $newFullPath = Join-Path -Path $directory.Parent.FullName -ChildPath $newName
            Rename-Item -Path $directory.FullName -NewName $newFullPath
        }
    }

    Write-Host "脚本执行完毕。" -ForegroundColor Magenta

使用说明:

  1. 将上述脚本保存为一个.ps1文件,例如CopyAndRename.ps1

  2. 打开PowerShell,导航到脚本所在的目录。

  3. 执行脚本,并提供输入数值1code输入数值2作为参数,例如:

  • .\CopyAndRename.ps1 -sourceYear 2024 -targetYear 2025

脚本说明:

  • 脚本首先接收两个参数:sourceYearcodetargetYear

  • 然后,它定义源目录和目标目录的路径。

  • 接下来,脚本检查源目录是否存在。如果不存在,则输出一条消息并退出。

  • 如果源目录存在,脚本使用Copy-Item命令复制源目录及其所有内容到目标目录。

  • 然后,脚本获取目标目录中的所有子目录和文件,并遍历它们。

  • 对于每个子目录和文件,脚本使用-replace操作符将名称中的sourceYear替换为targetYear,然后构造新的完整路径,并使用Rename-Item命令进行重命名。

  • 最后,脚本输出一条消息表示操作成功。

请确保在运行脚本之前备份您的数据,以防万一出现意外情况导致数据丢失。此外,如果您的目录结构或文件命名与示例中的不同,您可能需要相应地修改脚本中的路径和替换逻辑。


第10条随机版权
文章免责声明
  • 尊敬的读者:
  • 本文所提供的信息、观点及数据均来源于公开资料、相关研究报告及个人理解,仅供读者参考。本文不代表任何官方立场或专业机构的意见,亦不构成任何投资建议或决策依据。
  • 在撰写本文时,我们已尽力确保信息的准确性和完整性,但鉴于信息来源的多样性及可能存在的误差,我们无法保证本文所述内容在任何时刻都绝对准确无误。因此,读者在阅读本文时,应结合自身实际情况及专业知识,进行独立分析和判断。
  • 对于因本文信息不准确、不完整或读者自身理解偏差而导致的任何损失或损害,我们概不负责。同时,我们也不承担因本文所述内容引发的任何法律责任或纠纷。
  • 此外,本文可能包含对特定公司、行业或市场的分析和预测,这些分析和预测均基于当前市场环境及可获得的信息,并可能受到多种因素的影响而发生变化。因此,读者在参考本文时,应充分考虑这些潜在的风险和不确定性。
  • 我们鼓励读者在阅读本文后,进一步查阅相关资料和咨询专业人士,以获取更全面、准确的信息和建议。同时,我们也欢迎读者就本文内容提出宝贵的意见和建议,以便我们不断改进和提升文章质量。
  • 最后,感谢读者对本文的关注和阅读。我们希望通过提供有价值的信息和观点,为读者在相关领域的学习和决策提供一定的帮助和参考。但请务必记住,本文所述内容仅供参考,不构成任何具体建议或承诺。
  • 特此声明。
阅读剩余的71%

扫描二维码推送至手机访问。

版权声明:本文由TranBon博客发布,如需转载请注明出处。

本文链接:https://uc.33ol.com/?id=338

“复制指定文件夹并批量重命名子文件夹、子文件为指定文件名” 的相关文章

Proxmox VE 子机被锁定、进行解锁

Proxmox VE 子机被锁定、进行解锁

Proxmox VE 子机被锁定如:备份、迁移 失败后,被锁定的解决方法如下:如:子机ID为:166 开机、重启、关机、重置、回滚快照 提示:VM is locked (backup) (500)可以通过 Proxmox VE 网页里的-》数据中心-》对应的节点-》Shell或者通过ssh登录后输入...

Mac OS 修改ip

使用vnc远程修改ip v4会:报无效的服务器地址 BasicIPv6ValidationError所以还是用命令吧!设置IPv4地址终端输入:networksetup -setmanual Ethernet 192.168.31.2 255.255.255.0 192.168.1.1对应网卡设备、...

centos批量卸载软件

centos批量卸载软件

rpm -q --all --last 查看软件安装(更新)的时间 导出安装的软件 rpm -q --all > test.txt批量卸载test里的软件 cat test.txt | xargs rpm -e...

发表评论

访客

私密评论
加载验证码中...

◎欢迎参与讨论,请在这里发表您的看法和观点。
简体中文繁體中文English한국어日本語DeutschрусскийبالعربيةTÜRKÇEportuguêsคนไทยFrançais