我有一个应该是一个简单的问题,但我似乎无法做到正确。我有一个文件,有两个文件扩展名。我们检索文件,对其进行解密并将加密文件保存到备份文件夹,其中包含显示文件处理时间的日期/时间戳。我想要做的就是在两个扩展名之前放置日期/时间戳而不是它们之间。必须有一个简单的一行答案,但我找不到它。有什么建议吗?
原始文件名 - DAILY AP FILES.ZIP.pgp
当前重命名文件名 - DAILY_AP_FILES.ZIP-02182013-155123.pgp
所需的重命名文件名 - DAILY_AP_FILES-02182013-155123.pgp
Get-ChildItem "$dlpath\*.pgp" | ForEach-Object {
Move-Item $_.FullName "$BackupFolder$($_.BaseName.Replace(" ", "_"))-$(Get-Date -Format "MMddyyyy-HHmmss").pgp"
}
答案 0 :(得分:4)
试试这个:
Get-ChildItem "$dlpath\*.pgp" | ForEach-Object {
Move-Item $_.FullName "$BackupFolder$($_.BaseName -replace " ", "_" -replace '\.([^\.]+)$')-$(Get-Date -Format "MMddyyyy-HHmmss").pgp"
}
答案 1 :(得分:0)
这对你有用吗?
Get-ChildItem "$dlpath\*.pgp" | ForEach-Object {
$NewBaseName = ($_.BaseName.Replace(" ", "_")) -replace '^(.+\.).+','$1'
Move-Item $_.FullName "$BackupFolder$NewBaseName-$(Get-Date -Format "MMddyyyy-HHmmss").pgp"
}
答案 2 :(得分:0)
尝试此修改,因为按日期排序
而改进$source_path="D:\Transferencia"
$backup_folder="D:\Transferencia_Backup"
Get-ChildItem "$source_path\*.pgp" | ForEach-Object {
Move-Item $_.FullName "$backup_folder\$($_.BaseName -replace " ", "_")-$(Get-Date -Format "yyyyyMMdd_HHmmss").pgp"
}