我有一个字符串路径,
C:\temp\mybackup.zip
我想在脚本中插入一个时间戳,例如,
C:\temp\mybackup 2009-12-23.zip
在PowerShell中是否有简单的方法来实现这一点?
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)"}
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;
cnwbcb6i3#
我需要导出我们的安全日志,并希望日期和时间是协调世界时。这被证明是一个很难弄清楚的问题,但执行起来很简单:
wevtutil export-log security c:\users\%username%\SECURITYEVENTLOG-%computername%-$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ")).evtx
神奇的密码就在这一部分:
$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ"))
gcmastyq4#
感谢以上脚本。一个小的修改添加到文件正确结束。尝试这个...
$filenameFormat = "MyFileName" + " " + (Get-Date -Format "yyyy-MM-dd") **+ ".txt"** Rename-Item -Path "C:\temp\MyFileName.txt" -NewName $filenameFormat
myzjeezk5#
如果变量($pathfile)上有路径,请使用以下具体行获取时间戳路径:(摘自here:https://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
ghhaqwfi6#
用途:
$filenameFormat = "mybackup.zip" + " " + (Get-Date -Format "yyyy-MM-dd") Rename-Item -Path "C:\temp\mybackup.zip" -NewName $filenameFormat
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") }
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
ie3xauqp9#
Date + Filename- NOT(Filename + Date)-否则会弄乱文件扩展名。
Date + Filename
Filename + Date
$filenameFormat = (Get-Date -Format "yyyy-MM-dd") + " " + "mybackup.zip" Rename-Item -Path "C:\temp\mybackup.zip" -NewName $filenameFormat
9条答案
按热度按时间13z8s7eq1#
您可以使用子表达式(例如$())在双引号字符串中插入任意PowerShell脚本代码,如下所示:
如果你从其他地方获取路径--已经是一个字符串了:
如果路径恰好来自Get-ChildItem的输出:
3bygqnnd2#
下面是一些应该可以工作的PowerShell代码。你可以将大部分代码合并到更少的行中,但是我希望保持它清晰可读。
cnwbcb6i3#
我需要导出我们的安全日志,并希望日期和时间是协调世界时。这被证明是一个很难弄清楚的问题,但执行起来很简单:
神奇的密码就在这一部分:
gcmastyq4#
感谢以上脚本。一个小的修改添加到文件正确结束。尝试这个...
myzjeezk5#
如果变量($pathfile)上有路径,请使用以下具体行获取时间戳路径:
(摘自here:https://powershellexamples.com/home/Article/10/file-management-add-timestamp-to-file-name)
以上将返回:
ghhaqwfi6#
用途:
jogvjijk7#
重命名的另一种方法。
qoefvg9y8#
使用变量到重命名现有文件
文件已创建--〉事件Map器-2023-23-21-10-23.log
ie3xauqp9#
Date + Filename
- NOT(Filename + Date
)-否则会弄乱文件扩展名。