Метка на имя файла с помощью PowerShell
У меня есть путь в строке
"C:tempmybackup.зип"
Я хотел бы вставить метку времени в этот скрипт, например,
"C:tempmybackup 2009-12-23.зип"
есть ли простой способ сделать это в PowerShell?
5 ответов:
вы можете вставить произвольный код сценария 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)"}
вот некоторый код 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;
мне нужно экспортировать наш журнал и хотели дату и время в формате UTC. Это оказалось проблемой, чтобы выяснить, но так просто выполнить:
wevtutil export-log security c:\users\%username%\SECURITYEVENTLOG-%computername%-$(((get-date).ToUniversalTime()).ToString("yyyyMMddThhmmssZ")).evtx
волшебный код-это только эта часть:
$(((get-date).ToUniversalTime()).ToString("yyyyMMddThhmmssZ"))