PowerShell을 사용하는 파일 이름의 타임 스탬프


95

문자열에 경로가 있습니다.

"C:\temp\mybackup.zip"

예를 들어, 해당 스크립트에 타임 스탬프를 삽입하고 싶습니다.

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

PowerShell에서이 작업을 쉽게 수행 할 수 있습니까?

답변:


196

다음과 같이 $ ()와 같은 하위 식을 사용하여 큰 따옴표로 묶인 문자열에 임의의 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

큰 도움이 된 Keith 감사합니다
Chris Jones

1
그리고 내가 시간을 원한다면?
John 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;

감사합니다 Tom, 그것도 큰 도움이되었습니다
Chris Jones

12

보안 로그를 내 보내야했고 날짜와 시간이 협정 세계시로 표시되기를 원했습니다. 이것은 알아 내기가 어렵지만 실행하기는 매우 간단합니다.

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

매직 코드는 바로이 부분입니다.

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

hhtt그것은 유용 하지 않은 12 시간 시간 입니다. 사용 HH하면 24 시간 사용할 수 있습니다. 나도 권하고 싶습니다 hhmmsstt또는HHmmss
조쉬 갈색

@JoshBrown 위에서 변경 hh했습니다 HH. 나는 그것이 대부분의 사람들이 원하는 것이라고 생각합니다.
mwfearnley

4

위의 스크립트에 감사드립니다. 올바르게 끝나는 파일에 추가하기위한 약간의 수정. 이 시도 ...

$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 형식과 일치하기 때문에
마크 Schultheiss
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.