Метка на имя файла с помощью PowerShell


У меня есть путь в строке

"C:tempmybackup.зип"

Я хотел бы вставить метку времени в этот скрипт, например,

"C:tempmybackup 2009-12-23.зип"

есть ли простой способ сделать это в PowerShell?

5 71

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

Спасибо за приведенный выше скрипт. Одна небольшая модификация, чтобы добавить в файл, заканчивающийся правильно. Попробовать это. ..

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

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

использование:

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