TimeStamp на использовании имени файла PowerShell

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

"C:\temp\mybackup.zip"

Я хотел бы, вставляют метку времени в тот сценарий, например,

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

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

84
задан Peter Mortensen 14 December 2016 в 20:12
поделиться

2 ответа

Можно вставить произвольный код скрипта 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)"}
165
ответ дан 24 November 2019 в 08:31
поделиться

Вот код 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;
12
ответ дан 24 November 2019 в 08:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: