我需要根据分钟将文件从网络驱动器复制到本地驱动器。复制完之后,我需要按照以下要求修改文件名:
样本文件名:
Ser1-PRD-CL4$Entreprise_AG2_MyCompany-NA_DB_Name_02_LOG_20191217_094501.trn
删除所有出现在单词"MyCompany“之前的字符。
b.删除下划线和单词日志"_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 '^MyCompany'} #This is not working
发布于 2019-12-17 22:00:13
有关重复复制相同文件的第一个问题,请参见:Powershell script that can log already scanned files and ignore them on next run?
(A)
Get-ChildItem -Path $Targetfolder | Rename-Item -NewName {$_.Name.substring($_.Name.indexof("MyCompany"))}
请注意,字符串区分大小写。
发布于 2019-12-18 00:21:05
您可以在复制时使用Copy-Item来指定一个新名称(因此以后不需要重命名)。请看下面的代码以获得以下想法:
$Sourcefolder= "D:\Temp"
$Targetfolder= "D:\Temp2"
Get-ChildItem -Path $Sourcefolder -Recurse |
Where-Object {
$_.LastWriteTime -gt [datetime]::Now.AddMinutes(-60)
} | ForEach-Object {
$newname = $_.Name.Replace('_LOG','') # removes _LOG
$newname = $newname -Replace "(\d)_(\d)","$1$2" # replace underscore between the digits
$newname = $newname -Replace "(.*)Mycompany","MyCompany$1" # gets rid of anything before the word "MyCompany"
Copy-Item -Path $_ -Destination (Join-Path $Targetfolder $newname)
}
发布于 2019-12-18 04:08:59
我在这里尝试使用regex展望和查找后面的https://www.regular-expressions.info/lookaround.html,所以-replace
只去掉了真正匹配的部分。
dir |
copy-item -destination {
$_.name -replace '.*(?=MyCompany)' -replace '_LOG' -replace '(?<=\d)_(?=\d)' } -whatif
What if: Performing the operation "Copy File" on target
Item: /Users/js/foo/MyServer$Entreprise_AG2_MyCompany-NA_DB_Name_LOG_20191217_094501.trn
Destination: /Users/js/foo/MyCompany-NA_DB_Name_20191217094501.trn".
https://stackoverflow.com/questions/59382535
复制相似问题