使用PowerShell对文件名进行TimeStamp

时间:2009-12-23 17:32:25

标签: powershell

我在字符串中有一个路径,

“C:\ TEMP \ mybackup.zip”

我想在该脚本中插入一个时间戳,例如

“C:\ temp \ mybackup 2009-12-23.zip”

在PowerShell中有一种简单的方法吗?

7 个答案:

答案 0 :(得分:154)

您可以使用子表达式在双引号字符串中插入任意PowerShell脚本代码,例如$(),如下所示:

"C:\temp\mybackup $(get-date -f yyyy-MM-dd).zip"

如果你从其他地方获得路径 - 已经是一个字符串:

$dirName  = [io.path]::GetDirectoryName($path)
$filename = [io.path]::GetFileNameWithoutExtension($path)
$ext      = [io.path]::GetExtension($path)
$newPath  = "$dirName\$filename $(get-date -f yyyy-MM-dd)$ext"

如果路径碰巧来自Get-ChildItem的输出:

Get-ChildItem *.zip | Foreach {
  "$($_.DirectoryName)\$($_.BaseName) $(get-date -f yyyy-MM-dd)$($_.extension)"}

答案 1 :(得分:11)

这是一些应该有效的PowerShell代码。您可以将大部分内容组合成更少的行,但我希望保持清晰易读。

[string]$filePath = "C:\tempFile.zip";

[string]$directory = [System.IO.Path]::GetDirectoryName($filePath);
[string]$strippedFileName = [System.IO.Path]::GetFileNameWithoutExtension($filePath);
[string]$extension = [System.IO.Path]::GetExtension($filePath);
[string]$newFileName = $strippedFileName + [DateTime]::Now.ToString("yyyyMMdd-HHmmss") + $extension;
[string]$newFilePath = [System.IO.Path]::Combine($directory, $newFileName);

Move-Item -LiteralPath $filePath -Destination $newFilePath;

答案 2 :(得分:8)

我需要导出我们的安全日志,并希望在协调世界时的日期和时间。事实证明这是一个挑战,但执行起来却很简单:

wevtutil export-log security c:\users\%username%\SECURITYEVENTLOG-%computername%-$(((get-date).ToUniversalTime()).ToString("yyyyMMddThhmmssZ")).evtx

魔法代码只是这一部分:

$(((get-date).ToUniversalTime()).ToString("yyyyMMddThhmmssZ"))

答案 3 :(得分:2)

感谢上面的脚本。在文件中正确添加的一个小修改。试试这个......

$filenameFormat = "MyFileName" + " " + (Get-Date -Format "yyyy-MM-dd") **+ ".txt"**

Rename-Item -Path "C:\temp\MyFileName.txt" -NewName $filenameFormat

答案 4 :(得分:1)

使用:

$filenameFormat = "mybackup.zip" + " " + (Get-Date -Format "yyyy-MM-dd")
Rename-Item -Path "C:\temp\mybackup.zip" -NewName $filenameFormat

答案 5 :(得分:0)

另一种重命名方法。

Set-Location C:\Folder_containing_zipfiles
Get-ChildItem -File | ForEach-Object {  Rename-Item -Path $_.FullName -NewName  
 $_.Name.Replace('.zip',"_$(get-date -Format yyyy_MM_dd_hh_mm_ss).zip") }

答案 6 :(得分:0)

日期 + 文件名,- 不是(文件名 + 日期),- 否则会弄乱文件扩展名。

$filenameFormat =(Get-Date -Format "yyyy-MM-dd") + " " + "mybackup.zip" Rename-Item -Path "C:\temp\mybackup.zip" -NewName $filenameFormat