Powershell文件重命名日期/时间

时间:2013-02-18 21:05:21

标签: powershell

我有一个应该是一个简单的问题,但我似乎无法做到正确。我有一个文件,有两个文件扩展名。我们检索文件,对其进行解密并将加密文件保存到备份文件夹,其中包含显示文件处理时间的日期/时间戳。我想要做的就是在两个扩展名之前放置日期/时间戳而不是它们之间。必须有一个简单的一行答案,但我找不到它。有什么建议吗?

原始文件名 - 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"
}

3 个答案:

答案 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"
}