Powershell:复制和修改文件名

问题描述 投票:0回答:1

我需要根据分钟数将文件从网络驱动器复制到本地驱动器。复制完成后,我需要按照以下要求修改文件名:

样本文件名:

MyServer $ Entreprise_AG2_MyCompany-NA_DB_Name_LOG_20191217_094501.trn

  1. 复制35分钟前从网络目录中创建的所有文件,例如\ Server \本地目录D:\ NameofDB的路径(我能够实现复制部分,但想知道是否应该放置任何标志以防止再次复制同一文件,复制的文件将被修改其名称,因此不确定如何跟踪)
  2. 复制后,如下修改所有仅复制文件的名称:

  3. a。删除出现在单词“ MyCompany”之前的所有字符

    b。删除下划线以及单词LOG“ _LOG”

    c。删除日期和交易号之间的下划线(_):20191217_094501

    我已经完成了从文件名中复制和删除“ _LOG”的操作,但是在其余要求上遇到了麻烦。

任何输入将不胜感激:

重要说明:目标移动中将存在其他文件,并且始终会在目标目录之前对其进行修改,因此不应修改这些文件名。

$Sourcefolder= "D:\Temp"
$Targetfolder= "D:\Temp2"
Get-ChildItem -Path $Sourcefolder -Recurse|
Where-Object {
  $_.LastWriteTime -gt [datetime]::Now.AddMinutes(-60)
}| Copy-Item -Destination $Targetfolder
Get-ChildItem -Path $Targetfolder | Rename-Item -NewName {$_.Name -replace "_LOG", ""} 
Get-ChildItem -Path $Targetfolder | Rename-Item -NewName {$_.Name -replace '^MyAbsorb'} #This is not working

我需要根据分钟数将文件从网络驱动器复制到本地驱动器。复制完成后,我需要按照以下要求修改文件名:示例文件名:MyServer $ ...

powershell filenames
1个回答
0
投票

关于重复复制相同文件的第一个问题,请参见:Powershell script that can log already scanned files and ignore them on next run?

© www.soinside.com 2019 - 2024. All rights reserved.