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

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

adminis2天前技术410

输入数值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命令进行重命名。

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

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


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

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

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

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

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

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

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

特此声明。

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

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

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

返回列表

上一篇:“微软商店登打不开”解决方法

没有最新的文章了...

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

哈哈哈!大神Note3 终于可以把 酷派系统 或着 酷派系统 “砖头”直接刷机刷成 360 OS 2.0!

哈哈哈!大神Note3 终于可以把 酷派系统 或着 酷派系统 “砖头”直接刷机刷成 360 OS 2.0!

哈哈哈!大神Note3 终于可以把 酷派系统 直接刷成 360 OS 2.0了哈哈哈!大神Note3 终于可以把 酷派系统 “砖头”直接刷成 360 OS 2.0了最新版的刷机软件就可以了,直接把 酷派系统 或着 酷派系统 “砖头”直接刷机刷成 360 OS 2.0!下面重点:刷机软件 要是如下图,...

vi编辑器教程

http://blog.sina.com.cn/s/blog_736f1c59010136ry.htmlhttp://blog.csdn.net/lanxinju/article/details/5731843Linux下的文本编辑器有很多种,vi 是最常用的,也是各版本Linux的标配。注意,vi...

centos7破密时提示Authentication token manipulation error

centos7破密时提示Authentication token manipulation error

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

发表评论

访客

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