使用PowerShell按指定规则复制并重命名特定格式文件
PowerShell文件复制与自定义重命名方案
这里有个可以直接复用的PowerShell脚本,刚好匹配你的需求——把指定文件复制到目标位置,同时按照要求的规则重命名。我会把每一步的逻辑讲清楚,方便你调整:
完整脚本示例
# 替换成你的原文件实际路径 $originalFilePath = "C:\Your\Original\File\Path\KE1_F00177_077_00_50" # 替换成你要复制到的目标文件夹路径 $destinationFolder = "C:\Your\Target\Folder" # 获取文件对象,方便读取属性 $file = Get-Item $originalFilePath # 从原文件名里提取F00177部分 $fSegment = ($file.BaseName -split "_")[1] # 从文件修改时间提取年-月格式(2018_02) $yearMonth = $file.LastWriteTime.ToString("yyyy_MM") # 把修改时间格式化为你需要的yyyy.MM.dd.HH.mm样式 $modTimeStr = $file.LastWriteTime.ToString("yyyy.MM.dd.HH.mm") # 按照要求拼接新文件名 $newFileName = "_$fSegment`_$yearMonth`_$modTimeStr`_$($file.BaseName)" # 拼接完整的目标文件路径 $destinationPath = Join-Path -Path $destinationFolder -ChildPath $newFileName # 执行复制操作,-Force可以覆盖已存在的同名文件 Copy-Item -Path $originalFilePath -Destination $destinationPath -Force
关键步骤说明
- 路径定义:开头的两个变量需要你替换成自己的实际路径,确保PowerShell能找到原文件和目标文件夹。
- 提取文件名片段:原文件名
KE1_F00177_077_00_50用-split "_"拆分成数组后,索引1的元素就是F00177,这一步是动态提取的,就算文件名前缀有变化也能适配。 - 时间格式处理:脚本直接读取文件的
LastWriteTime(修改时间),自动转换成你需要的两种格式——2018_02和2018.02.21.10.30,不需要手动输入时间,准确性更高。 - 文件名拼接:严格按照你要求的格式组合新文件名,确保最终结果是
_F00177_2018_02_2018.02.21.10.30_KE1_F00177_077_00_50。 - 复制操作:
Copy-Item负责把文件复制到目标位置,-Force参数可选,如果你希望覆盖目标文件夹里已有的同名文件就保留它。
手动指定修改时间的情况
如果因为某些原因,你不想用文件的实际修改时间,而是要手动指定2018.02.21.10.30,可以把脚本里的时间相关部分改成这样:
# 手动定义修改时间 $customModTime = [DateTime]"2018-02-21 10:30:00" $yearMonth = $customModTime.ToString("yyyy_MM") $modTimeStr = $customModTime.ToString("yyyy.MM.dd.HH.mm")
这样就能完全按照你指定的时间来生成新文件名了。
内容的提问来源于stack exchange,提问作者phalondon
相关产品推荐
相关产品推荐

