使用PowerShell在文件名上添加时间戳

gv8xihay  于 2023-03-12  发布在  Shell
关注(0)|答案(9)|浏览(205)

我有一个字符串路径,

C:\temp\mybackup.zip

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

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

在PowerShell中是否有简单的方法来实现这一点?

13z8s7eq

13z8s7eq1#

您可以使用子表达式(例如$())在双引号字符串中插入任意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)"}
3bygqnnd

3bygqnnd2#

下面是一些应该可以工作的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;
cnwbcb6i

cnwbcb6i3#

我需要导出我们的安全日志,并希望日期和时间是协调世界时。这被证明是一个很难弄清楚的问题,但执行起来很简单:

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

神奇的密码就在这一部分:

$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ"))
gcmastyq

gcmastyq4#

感谢以上脚本。一个小的修改添加到文件正确结束。尝试这个...

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

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

myzjeezk5#

如果变量($pathfile)上有路径,请使用以下具体行获取时间戳路径:
(摘自herehttps://powershellexamples.com/home/Article/10/file-management-add-timestamp-to-file-name

$pathFile = "C:\ProgramData\MyApp\file.txt"
$pathFileTimestamp = [System.IO.Path]::GetDirectoryName($pathFile) + "\" + `
        [System.IO.Path]::GetFileNameWithoutExtension($pathFile) + "_" + `
        (get-date -format yyyyMMdd_HHmmss) + ([System.IO.Path]::GetExtension($pathFile))

Write-Host "Path+File: $pathFile"
Write-Host "Path+File with Timestamp: $pathFileTimestamp"

以上将返回:

PS C:\> Path+File: C:\ProgramData\MyApp\file.txt
        Path+File with Timestamp: C:\ProgramData\MyApp\file_20210328_022045.txt
ghhaqwfi

ghhaqwfi6#

用途:

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

jogvjijk7#

重命名的另一种方法。

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") }
qoefvg9y

qoefvg9y8#

使用变量到重命名现有文件

Get-Content -Path '${{vars.LOG_PATH}}\eventMapper.log'
$filenameFormat = 'eventMapper-' + (Get-Date -Format 'yyyy-mm-dd-hh-mm') + '.log'
Rename-Item -Path '${{vars.LOG_PATH}}\eventMapper.log' -NewName $filenameFormat

文件已创建--〉事件Map器-2023-23-21-10-23.log

ie3xauqp

ie3xauqp9#

Date + Filename- NOT(Filename + Date)-否则会弄乱文件扩展名。

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

相关问题