当前位置:TranBon博客 > 首页 > 技术 > 复制指定文件夹并批量重命名子文件夹、子文件为指定文件名

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

adminis3周前 (12-03)技术12980

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


要实现您的需求,我们需要编写一个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. 请将$sourceDirPath$targetDirPath的路径更改为实际的源目录和目标目录路径。

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

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

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

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



要实现您描述的功能,我们可以编写一个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. 执行脚本,并提供输入数值1输入数值2作为参数,例如:

.\CopyAndRename.ps1 -sourceYear 2024 -targetYear 2025

脚本说明:

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

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

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

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

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

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

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

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


第4条随机版权
文章免责声明
尊敬的读者:

本文所提供的信息、观点及数据均来源于公开资料、相关研究报告及个人理解,仅供读者参考。本文不代表任何官方立场或专业机构的意见,亦不构成任何投资建议或决策依据。

在撰写本文时,我们已尽力确保信息的准确性和完整性,但鉴于信息来源的多样性及可能存在的误差,我们无法保证本文所述内容在任何时刻都绝对准确无误。因此,读者在阅读本文时,应结合自身实际情况及专业知识,进行独立分析和判断。

对于因本文信息不准确、不完整或读者自身理解偏差而导致的任何损失或损害,我们概不负责。同时,我们也不承担因本文所述内容引发的任何法律责任或纠纷。

此外,本文可能包含对特定公司、行业或市场的分析和预测,这些分析和预测均基于当前市场环境及可获得的信息,并可能受到多种因素的影响而发生变化。因此,读者在参考本文时,应充分考虑这些潜在的风险和不确定性。

我们鼓励读者在阅读本文后,进一步查阅相关资料和咨询专业人士,以获取更全面、准确的信息和建议。同时,我们也欢迎读者就本文内容提出宝贵的意见和建议,以便我们不断改进和提升文章质量。

最后,感谢读者对本文的关注和阅读。我们希望通过提供有价值的信息和观点,为读者在相关领域的学习和决策提供一定的帮助和参考。但请务必记住,本文所述内容仅供参考,不构成任何具体建议或承诺。

特此声明。

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

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

本文链接:https://bk.tranbon.com/?id=338

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

centos7破密时提示Authentication token manipulation error

centos7破密时提示Authentication token manipulation error

需要在passwd 前输入chattr -i /etc/passwd chattr -i /etc/shadow如下:...

Linux、Centos一些命令

Centos6-关闭防火墙service iptables stopchkconfig iptables offCentos6-关闭selinux(需重启生效)sed -i.bak '/^SELINUX=/cSELINUX=disabled' /etc/sysconfig/selin...

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

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

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

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。