PowerShellを使用したファイル名のタイムスタンプ


94

文字列にパスがあります。

"C:\temp\mybackup.zip"

たとえば、そのスクリプトにタイムスタンプを挿入します。

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

PowerShellでこれを行う簡単な方法はありますか?

回答:


195

$()などの部分式を使用して、二重引用符で囲まれた文字列に任意の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)"}

5
ああ。get-date -f yyyy-MM-dd私はそれがだことを認識する前に一瞬停止作られていない-f オペレータが、ために短い形式-Format のパラメータ。どうやらそれは場違いに見えました:-)
Joey

とても助かりましたキースに感謝します
クリス・ジョーンズ

1
時間も欲しいなら?
ジョンDemetriou


16

動作するはずの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

セキュリティログをエクスポートする必要があり、日付と時刻を協定世界時で求めていました。これは理解するのが難しいことがわかりましたが、実行するのは簡単です。

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

魔法のコードはまさにこの部分です:

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

hh12時間制ですが、ttこれがないと役に立ちません。使用HHすると24時間利用できます。私はどちらhhmmssttかをお勧めしますHHmmss
Josh Brown

@JoshBrown 上記に変更hhしましたHH。それがほとんどの人が望むことだと思います。
mwfearnley

4

上記のスクリプトをありがとう。ファイルを追加するための1つの小さな変更が正しく終了しています。これを試して ...

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

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

2

使用する:

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

おそらく$filenameFormat = "mybackup $(Get-Date -Format "yyyy-MM-dd").zip" それがOPフォーマットと一致しているため
Mark Schultheiss、2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.